diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2007-10-29 15:10:31 +0000 |
|---|---|---|
| committer | Igor Sysoev <igor@sysoev.ru> | 2007-10-29 15:10:31 +0000 |
| commit | 042aaba551f42c6e1af0ce6f3ab1681b88268f40 (patch) | |
| tree | 9308f6b44dab73247992475abe3062bb84a38af6 /src/core/ngx_string.c | |
| parent | 66a780f443d9889bfcf64c2b99ae5d0ce3cf95b3 (diff) | |
| download | nginx-042aaba551f42c6e1af0ce6f3ab1681b88268f40.tar.gz nginx-042aaba551f42c6e1af0ce6f3ab1681b88268f40.tar.bz2 | |
r1553, r1554 merge:
ngx_strnstr()
Diffstat (limited to 'src/core/ngx_string.c')
| -rw-r--r-- | src/core/ngx_string.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/core/ngx_string.c b/src/core/ngx_string.c index 45079b706..0385c9643 100644 --- a/src/core/ngx_string.c +++ b/src/core/ngx_string.c @@ -503,6 +503,40 @@ ngx_strncasecmp(u_char *s1, u_char *s2, size_t n) } +u_char * +ngx_strnstr(u_char *s1, char *s2, size_t len) +{ + u_char c1, c2; + size_t n; + + c2 = *(u_char *) s2++; + + n = ngx_strlen(s2); + + do { + do { + if (len-- == 0) { + return NULL; + } + + c1 = *s1++; + + if (c1 == 0) { + return NULL; + } + + } while (c1 != c2); + + if (n > len) { + return NULL; + } + + } while (ngx_strncmp(s1, (u_char *) s2, n) != 0); + + return --s1; +} + + /* * ngx_strstrn() and ngx_strcasestrn() are intended to search for static * substring with known length in null-terminated string. The argument n |
