|
|
|
|
@ -692,6 +692,39 @@ ngx_strcasestrn(u_char *s1, char *s2, size_t n) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* ngx_strlcasestrn() is intended to search for static substring |
|
|
|
|
* with known length in string until the argument last. The argument n |
|
|
|
|
* must be length of the second substring - 1. |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
u_char * |
|
|
|
|
ngx_strlcasestrn(u_char *s1, u_char *last, u_char *s2, size_t n) |
|
|
|
|
{ |
|
|
|
|
ngx_uint_t c1, c2; |
|
|
|
|
|
|
|
|
|
c2 = (ngx_uint_t) *s2++; |
|
|
|
|
c2 = (c2 >= 'A' && c2 <= 'Z') ? (c2 | 0x20) : c2; |
|
|
|
|
last -= n; |
|
|
|
|
|
|
|
|
|
do { |
|
|
|
|
do { |
|
|
|
|
if (s1 == last) { |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
c1 = (ngx_uint_t) *s1++; |
|
|
|
|
|
|
|
|
|
c1 = (c1 >= 'A' && c1 <= 'Z') ? (c1 | 0x20) : c1; |
|
|
|
|
|
|
|
|
|
} while (c1 != c2); |
|
|
|
|
|
|
|
|
|
} while (ngx_strncasecmp(s1, s2, n) != 0); |
|
|
|
|
|
|
|
|
|
return --s1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ngx_int_t |
|
|
|
|
ngx_rstrncmp(u_char *s1, u_char *s2, size_t n) |
|
|
|
|
{ |
|
|
|
|
|