Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2009-04-04 21:31:54 +0400
committerIgor Sysoev <igor@sysoev.ru>2009-04-04 21:31:54 +0400
commita514d68bfb7c0417013cb76e7626fa8c90b5c840 (patch)
tree592b727398a710e4bd8cd16af845adcce4d0de1a /src/core/ngx_string.c
parent054c505050d45983c6c8ab6ebf2b2ccc246e00e0 (diff)
ngx_strlcasestrn()
Diffstat (limited to 'src/core/ngx_string.c')
-rw-r--r--src/core/ngx_string.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/core/ngx_string.c b/src/core/ngx_string.c
index 0ad594f82..fbde1c2ce 100644
--- a/src/core/ngx_string.c
+++ b/src/core/ngx_string.c
@@ -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)
{