Вторник, 10 Июнь 2008
nginx programming: поиcк подстроки в строке
В процессе написания своих модулей под nginx часто приходится искать подстроку в строке. К сожалению обычный strstr не подходит из-за особеностей строк.
Для этих целей и была написана своя strstr, может кому пригодится:
size_t ngx_string_strstr(ngx_str_t *result, ngx_str_t* str, ngx_str_t *need)
{
u_char *str_ptr = str->data;
u_char *str_end = str->data + str->len — need->len;
result->data = NULL;
result->len = 0;
if (str->len == 0) {
return 0;
}
if (str_end <= str_ptr) {
return 0;
}
switch (str->len) {
case 1:
{
for (; str_ptr <= str_end; ++str_ptr) {
if (*str_ptr == *need->data) {
result->data = str_ptr;
result->len = str->len — (str_ptr — str->data);
break;
}
}
}
break;
default:
{
for (; str_ptr <= str_end; ++str_ptr) {
if (*str_ptr == *need->data && memcmp(str_ptr, need->data, need->len) == 0) {
result->data = str_ptr;
result->len = str->len — (str_ptr — str->data);
break;
}
}
}
}
return result->len;
}
Комментарии
Форма комментирования для «nginx programming: поиcк подстроки в строке»