ngx_strlcasestrn()

This commit is contained in:
Igor Sysoev 2009-04-04 17:31:54 +00:00
parent 054c505050
commit a514d68bfb
2 changed files with 34 additions and 0 deletions

View File

@ -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)
{

View File

@ -149,6 +149,7 @@ u_char *ngx_strnstr(u_char *s1, char *s2, size_t n);
u_char *ngx_strstrn(u_char *s1, char *s2, size_t n);
u_char *ngx_strcasestrn(u_char *s1, char *s2, size_t n);
u_char *ngx_strlcasestrn(u_char *s1, u_char *last, u_char *s2, size_t n);
ngx_int_t ngx_rstrncmp(u_char *s1, u_char *s2, size_t n);
ngx_int_t ngx_rstrncasecmp(u_char *s1, u_char *s2, size_t n);