annotate src/core/ngx_string.h @ 9274:46ecad404a29 default tip

Mail: reset imap tag to empty after authentication attempt. We need to reset the imap tag to empty after an authentication attempt completes, otherwise if the next line parsed is incomplete with no tag (e.g. empty line) then we use the "tag" from the previous buffer which is now definitely wrong and has been partially overwritten with the most recently read data (e.g. CRLF). An example before this patch: S: * OK IMAP4 ready C: foobar login a b S: foobar NO Incorrect username or password. C: S: S: obar BAD invalid command Then with this patch: S: * OK IMAP4 ready C: foobar login a b S: foobar NO Incorrect username or password. C: S: * BAD invalid command
author Rob Mueller <robm@fastmailteam.com>
date Wed, 15 May 2024 10:06:00 +0300
parents 2ffefe2f892e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
1
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
2 /*
444
42d11f017717 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents: 441
diff changeset
3 * Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 4192
diff changeset
4 * Copyright (C) Nginx, Inc.
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
5 */
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
6
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
7
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #ifndef _NGX_STRING_H_INCLUDED_
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 #define _NGX_STRING_H_INCLUDED_
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12 #include <ngx_config.h>
100
7ebc8b7fb816 nginx-0.0.1-2003-06-03-19:42:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
13 #include <ngx_core.h>
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
15
19
d7908993fdeb nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents: 0
diff changeset
16 typedef struct {
1310
33d6c994a0b2 Sun Studio on sparc uses different bit order
Igor Sysoev <igor@sysoev.ru>
parents: 1298
diff changeset
17 size_t len;
33d6c994a0b2 Sun Studio on sparc uses different bit order
Igor Sysoev <igor@sysoev.ru>
parents: 1298
diff changeset
18 u_char *data;
19
d7908993fdeb nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents: 0
diff changeset
19 } ngx_str_t;
d7908993fdeb nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents: 0
diff changeset
20
40
d5d4f3bba6f0 nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 26
diff changeset
21
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
22 typedef struct {
1310
33d6c994a0b2 Sun Studio on sparc uses different bit order
Igor Sysoev <igor@sysoev.ru>
parents: 1298
diff changeset
23 ngx_str_t key;
33d6c994a0b2 Sun Studio on sparc uses different bit order
Igor Sysoev <igor@sysoev.ru>
parents: 1298
diff changeset
24 ngx_str_t value;
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
25 } ngx_keyval_t;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
26
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 601
diff changeset
27
1310
33d6c994a0b2 Sun Studio on sparc uses different bit order
Igor Sysoev <igor@sysoev.ru>
parents: 1298
diff changeset
28 typedef struct {
2008
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1956
diff changeset
29 unsigned len:28;
1310
33d6c994a0b2 Sun Studio on sparc uses different bit order
Igor Sysoev <igor@sysoev.ru>
parents: 1298
diff changeset
30
33d6c994a0b2 Sun Studio on sparc uses different bit order
Igor Sysoev <igor@sysoev.ru>
parents: 1298
diff changeset
31 unsigned valid:1;
1565
4c43e25d11ea fix English grammar
Igor Sysoev <igor@sysoev.ru>
parents: 1552
diff changeset
32 unsigned no_cacheable:1;
1310
33d6c994a0b2 Sun Studio on sparc uses different bit order
Igor Sysoev <igor@sysoev.ru>
parents: 1298
diff changeset
33 unsigned not_found:1;
2008
66dc85397a90 escape 0x00-0x1f, ", and \ in access log variables
Igor Sysoev <igor@sysoev.ru>
parents: 1956
diff changeset
34 unsigned escape:1;
1310
33d6c994a0b2 Sun Studio on sparc uses different bit order
Igor Sysoev <igor@sysoev.ru>
parents: 1298
diff changeset
35
33d6c994a0b2 Sun Studio on sparc uses different bit order
Igor Sysoev <igor@sysoev.ru>
parents: 1298
diff changeset
36 u_char *data;
33d6c994a0b2 Sun Studio on sparc uses different bit order
Igor Sysoev <igor@sysoev.ru>
parents: 1298
diff changeset
37 } ngx_variable_value_t;
33d6c994a0b2 Sun Studio on sparc uses different bit order
Igor Sysoev <igor@sysoev.ru>
parents: 1298
diff changeset
38
33d6c994a0b2 Sun Studio on sparc uses different bit order
Igor Sysoev <igor@sysoev.ru>
parents: 1298
diff changeset
39
1107
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1029
diff changeset
40 #define ngx_string(str) { sizeof(str) - 1, (u_char *) str }
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1029
diff changeset
41 #define ngx_null_string { 0, NULL }
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3512
diff changeset
42 #define ngx_str_set(str, text) \
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3512
diff changeset
43 (str)->len = sizeof(text) - 1; (str)->data = (u_char *) text
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3512
diff changeset
44 #define ngx_str_null(str) (str)->len = 0; (str)->data = NULL
477
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
45
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
46
1107
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1029
diff changeset
47 #define ngx_tolower(c) (u_char) ((c >= 'A' && c <= 'Z') ? (c | 0x20) : c)
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1029
diff changeset
48 #define ngx_toupper(c) (u_char) ((c >= 'a' && c <= 'z') ? (c & ~0x20) : c)
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
49
2135
8c6521eedf84 ngx_strlow()
Igor Sysoev <igor@sysoev.ru>
parents: 2125
diff changeset
50 void ngx_strlow(u_char *dst, u_char *src, size_t n);
8c6521eedf84 ngx_strlow()
Igor Sysoev <igor@sysoev.ru>
parents: 2125
diff changeset
51
288
f81d075ad172 nginx-0.0.2-2004-03-14-23:46:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 175
diff changeset
52
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
53 #define ngx_strncmp(s1, s2, n) strncmp((const char *) s1, (const char *) s2, n)
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
54
288
f81d075ad172 nginx-0.0.2-2004-03-14-23:46:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 175
diff changeset
55
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
56 /* msvc and icc7 compile strcmp() to inline loop */
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
57 #define ngx_strcmp(s1, s2) strcmp((const char *) s1, (const char *) s2)
288
f81d075ad172 nginx-0.0.2-2004-03-14-23:46:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 175
diff changeset
58
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
59
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
60 #define ngx_strstr(s1, s2) strstr((const char *) s1, (const char *) s2)
2201
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
61 #define ngx_strlen(s) strlen((const char *) s)
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
62
7120
874171c3c71a Fixed handling of non-null-terminated unix sockets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5944
diff changeset
63 size_t ngx_strnlen(u_char *p, size_t n);
874171c3c71a Fixed handling of non-null-terminated unix sockets.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5944
diff changeset
64
1157
a4820184a618 *) introduce ngx_strchr()
Igor Sysoev <igor@sysoev.ru>
parents: 1107
diff changeset
65 #define ngx_strchr(s1, c) strchr((const char *) s1, (int) c)
2201
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
66
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
67 static ngx_inline u_char *
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
68 ngx_strlchr(u_char *p, u_char *last, u_char c)
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
69 {
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
70 while (p < last) {
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
71
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
72 if (*p == c) {
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
73 return p;
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
74 }
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
75
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
76 p++;
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
77 }
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
78
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
79 return NULL;
49a269b67213 ngx_strlchr()
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
80 }
288
f81d075ad172 nginx-0.0.2-2004-03-14-23:46:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 175
diff changeset
81
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
82
107
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 100
diff changeset
83 /*
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
84 * msvc and icc7 compile memset() to the inline "rep stos"
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 409
diff changeset
85 * while ZeroMemory() and bzero() are the calls.
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
86 * icc7 may also inline several mov's of a zeroed register for small blocks.
107
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 100
diff changeset
87 */
515
417a087c9c4d nginx-0.1.32-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
88 #define ngx_memzero(buf, n) (void) memset(buf, 0, n)
417a087c9c4d nginx-0.1.32-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
89 #define ngx_memset(buf, c, n) (void) memset(buf, c, n)
107
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 100
diff changeset
90
7395
9ca82f273967 Core: ngx_explicit_memzero().
Maxim Dounin <mdounin@mdounin.ru>
parents: 7120
diff changeset
91 void ngx_explicit_memzero(void *buf, size_t n);
9ca82f273967 Core: ngx_explicit_memzero().
Maxim Dounin <mdounin@mdounin.ru>
parents: 7120
diff changeset
92
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
93
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
94 #if (NGX_MEMCPY_LIMIT)
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
95
4781
814541b2ec23 Added "const" to ngx_memcpy() with NGX_MEMCPY_LIMIT defined.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
96 void *ngx_memcpy(void *dst, const void *src, size_t n);
3644
5d3282cfc43c fix a bug when ngx_cpymem() returns a cast type:
Igor Sysoev <igor@sysoev.ru>
parents: 3641
diff changeset
97 #define ngx_cpymem(dst, src, n) (((u_char *) ngx_memcpy(dst, src, n)) + (n))
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
98
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
99 #else
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
100
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
101 /*
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
102 * gcc3, msvc, and icc7 compile memcpy() to the inline "rep movs".
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
103 * gcc3 compiles memcpy(d, s, 4) to the inline "mov"es.
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
104 * icc8 compile memcpy(d, s, 4) to the inline "mov"es or XMM moves.
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
105 */
515
417a087c9c4d nginx-0.1.32-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
106 #define ngx_memcpy(dst, src, n) (void) memcpy(dst, src, n)
3644
5d3282cfc43c fix a bug when ngx_cpymem() returns a cast type:
Igor Sysoev <igor@sysoev.ru>
parents: 3641
diff changeset
107 #define ngx_cpymem(dst, src, n) (((u_char *) memcpy(dst, src, n)) + (n))
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
108
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
109 #endif
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
110
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
111
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
112 #if ( __INTEL_COMPILER >= 800 )
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
113
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
114 /*
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
115 * the simple inline cycle copies the variable length strings up to 16
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
116 * bytes faster than icc8 autodetecting _intel_fast_memcpy()
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
117 */
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
118
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
119 static ngx_inline u_char *
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
120 ngx_copy(u_char *dst, u_char *src, size_t len)
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
121 {
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
122 if (len < 17) {
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
123
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
124 while (len) {
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
125 *dst++ = *src++;
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
126 len--;
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
127 }
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
128
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
129 return dst;
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
130
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
131 } else {
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
132 return ngx_cpymem(dst, src, len);
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
133 }
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
134 }
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
135
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
136 #else
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
137
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
138 #define ngx_copy ngx_cpymem
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
139
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
140 #endif
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
141
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
142
8108
351d7f4e326f Fixed alignment of ngx_memmove()/ngx_movemem() macro definitions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7395
diff changeset
143 #define ngx_memmove(dst, src, n) (void) memmove(dst, src, n)
351d7f4e326f Fixed alignment of ngx_memmove()/ngx_movemem() macro definitions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7395
diff changeset
144 #define ngx_movemem(dst, src, n) (((u_char *) memmove(dst, src, n)) + (n))
3887
e7798b5e990a use memmove() in appropriate places
Igor Sysoev <igor@sysoev.ru>
parents: 3756
diff changeset
145
e7798b5e990a use memmove() in appropriate places
Igor Sysoev <igor@sysoev.ru>
parents: 3756
diff changeset
146
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 527
diff changeset
147 /* msvc and icc7 compile memcmp() to the inline loop */
8109
2ffefe2f892e Removed casts from ngx_memcmp() macro.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8108
diff changeset
148 #define ngx_memcmp(s1, s2, n) memcmp(s1, s2, n)
107
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 100
diff changeset
149
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
150
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 288
diff changeset
151 u_char *ngx_cpystrn(u_char *dst, u_char *src, size_t n);
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
152 u_char *ngx_pstrdup(ngx_pool_t *pool, ngx_str_t *src);
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
153 u_char * ngx_cdecl ngx_sprintf(u_char *buf, const char *fmt, ...);
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
154 u_char * ngx_cdecl ngx_snprintf(u_char *buf, size_t max, const char *fmt, ...);
2763
819bea4e964e ngx_vslprintf(), ngx_slprintf()
Igor Sysoev <igor@sysoev.ru>
parents: 2668
diff changeset
155 u_char * ngx_cdecl ngx_slprintf(u_char *buf, u_char *last, const char *fmt,
819bea4e964e ngx_vslprintf(), ngx_slprintf()
Igor Sysoev <igor@sysoev.ru>
parents: 2668
diff changeset
156 ...);
819bea4e964e ngx_vslprintf(), ngx_slprintf()
Igor Sysoev <igor@sysoev.ru>
parents: 2668
diff changeset
157 u_char *ngx_vslprintf(u_char *buf, u_char *last, const char *fmt, va_list args);
819bea4e964e ngx_vslprintf(), ngx_slprintf()
Igor Sysoev <igor@sysoev.ru>
parents: 2668
diff changeset
158 #define ngx_vsnprintf(buf, max, fmt, args) \
819bea4e964e ngx_vslprintf(), ngx_slprintf()
Igor Sysoev <igor@sysoev.ru>
parents: 2668
diff changeset
159 ngx_vslprintf(buf, buf + (max), fmt, args)
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
160
1107
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1029
diff changeset
161 ngx_int_t ngx_strcasecmp(u_char *s1, u_char *s2);
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1029
diff changeset
162 ngx_int_t ngx_strncasecmp(u_char *s1, u_char *s2, size_t n);
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1029
diff changeset
163
1552
f045c67ab622 ngx_strnstr()
Igor Sysoev <igor@sysoev.ru>
parents: 1544
diff changeset
164 u_char *ngx_strnstr(u_char *s1, char *s2, size_t n);
f045c67ab622 ngx_strnstr()
Igor Sysoev <igor@sysoev.ru>
parents: 1544
diff changeset
165
1542
f5bd1a7ed2cd ngx_strstrn() and ngx_strcasestrn()
Igor Sysoev <igor@sysoev.ru>
parents: 1405
diff changeset
166 u_char *ngx_strstrn(u_char *s1, char *s2, size_t n);
f5bd1a7ed2cd ngx_strstrn() and ngx_strcasestrn()
Igor Sysoev <igor@sysoev.ru>
parents: 1405
diff changeset
167 u_char *ngx_strcasestrn(u_char *s1, char *s2, size_t n);
2668
2f9c37445ffb ngx_strlcasestrn()
Igor Sysoev <igor@sysoev.ru>
parents: 2201
diff changeset
168 u_char *ngx_strlcasestrn(u_char *s1, u_char *last, u_char *s2, size_t n);
1542
f5bd1a7ed2cd ngx_strstrn() and ngx_strcasestrn()
Igor Sysoev <igor@sysoev.ru>
parents: 1405
diff changeset
169
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 288
diff changeset
170 ngx_int_t ngx_rstrncmp(u_char *s1, u_char *s2, size_t n);
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
171 ngx_int_t ngx_rstrncasecmp(u_char *s1, u_char *s2, size_t n);
1029
ce08bc4cb97b ngx_strn2cmp() > ngx_memn2cmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1024
diff changeset
172 ngx_int_t ngx_memn2cmp(u_char *s1, u_char *s2, size_t n1, size_t n2);
3116
98e288c6dac3 If .domain.com, .sub.domain.com, and .domain-some.com were defined,
Igor Sysoev <igor@sysoev.ru>
parents: 2763
diff changeset
173 ngx_int_t ngx_dns_strcmp(u_char *s1, u_char *s2);
5389
72e31d88defa Added ngx_filename_cmp() with "/" sorted to the left.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4781
diff changeset
174 ngx_int_t ngx_filename_cmp(u_char *s1, u_char *s2, size_t n);
338
0376cffa29e6 nginx-0.0.3-2004-05-20-21:33:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 292
diff changeset
175
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 288
diff changeset
176 ngx_int_t ngx_atoi(u_char *line, size_t n);
3512
098100f5f54b ngx_atofp()
Igor Sysoev <igor@sysoev.ru>
parents: 3116
diff changeset
177 ngx_int_t ngx_atofp(u_char *line, size_t n, size_t point);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
178 ssize_t ngx_atosz(u_char *line, size_t n);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
179 off_t ngx_atoof(u_char *line, size_t n);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
180 time_t ngx_atotm(u_char *line, size_t n);
338
0376cffa29e6 nginx-0.0.3-2004-05-20-21:33:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 292
diff changeset
181 ngx_int_t ngx_hextoi(u_char *line, size_t n);
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
182
1745
ec63069aeb78 replace ngx_md5_text() with ngx_hex_dump()
Igor Sysoev <igor@sysoev.ru>
parents: 1648
diff changeset
183 u_char *ngx_hex_dump(u_char *dst, u_char *src, size_t len);
174
ea464a6c0581 nginx-0.0.1-2003-11-05-01:12:39 import
Igor Sysoev <igor@sysoev.ru>
parents: 135
diff changeset
184
409
8ac40cae79f0 nginx-0.0.10-2004-08-29-07:55:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 408
diff changeset
185
8ac40cae79f0 nginx-0.0.10-2004-08-29-07:55:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 408
diff changeset
186 #define ngx_base64_encoded_length(len) (((len + 2) / 3) * 4)
8ac40cae79f0 nginx-0.0.10-2004-08-29-07:55:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 408
diff changeset
187 #define ngx_base64_decoded_length(len) (((len + 3) / 4) * 3)
8ac40cae79f0 nginx-0.0.10-2004-08-29-07:55:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 408
diff changeset
188
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
189 void ngx_encode_base64(ngx_str_t *dst, ngx_str_t *src);
5551
a602e1006579 Core: added ngx_encode_base64url().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5389
diff changeset
190 void ngx_encode_base64url(ngx_str_t *dst, ngx_str_t *src);
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
191 ngx_int_t ngx_decode_base64(ngx_str_t *dst, ngx_str_t *src);
3756
7224d008faaf new ngx_http_secure_link_module with secure_link, secure_link_md5, and
Igor Sysoev <igor@sysoev.ru>
parents: 3644
diff changeset
192 ngx_int_t ngx_decode_base64url(ngx_str_t *dst, ngx_str_t *src);
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
193
2125
8e4b9d2acde8 rename ngx_utf_...() to ngx_utf8_...()
Igor Sysoev <igor@sysoev.ru>
parents: 2120
diff changeset
194 uint32_t ngx_utf8_decode(u_char **p, size_t n);
8e4b9d2acde8 rename ngx_utf_...() to ngx_utf8_...()
Igor Sysoev <igor@sysoev.ru>
parents: 2120
diff changeset
195 size_t ngx_utf8_length(u_char *p, size_t n);
8e4b9d2acde8 rename ngx_utf_...() to ngx_utf8_...()
Igor Sysoev <igor@sysoev.ru>
parents: 2120
diff changeset
196 u_char *ngx_utf8_cpystrn(u_char *dst, u_char *src, size_t n, size_t len);
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
197
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
198
4192
61e4af19df9f Autoindex: escape '?' in file names.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3887
diff changeset
199 #define NGX_ESCAPE_URI 0
61e4af19df9f Autoindex: escape '?' in file names.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3887
diff changeset
200 #define NGX_ESCAPE_ARGS 1
61e4af19df9f Autoindex: escape '?' in file names.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3887
diff changeset
201 #define NGX_ESCAPE_URI_COMPONENT 2
61e4af19df9f Autoindex: escape '?' in file names.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3887
diff changeset
202 #define NGX_ESCAPE_HTML 3
61e4af19df9f Autoindex: escape '?' in file names.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3887
diff changeset
203 #define NGX_ESCAPE_REFRESH 4
61e4af19df9f Autoindex: escape '?' in file names.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3887
diff changeset
204 #define NGX_ESCAPE_MEMCACHED 5
61e4af19df9f Autoindex: escape '?' in file names.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3887
diff changeset
205 #define NGX_ESCAPE_MAIL_AUTH 6
601
77f77f53214a nginx-0.3.22-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
206
1593
bef67c6abbe7 unescape SSI include
Igor Sysoev <igor@sysoev.ru>
parents: 1565
diff changeset
207 #define NGX_UNESCAPE_URI 1
bef67c6abbe7 unescape SSI include
Igor Sysoev <igor@sysoev.ru>
parents: 1565
diff changeset
208 #define NGX_UNESCAPE_REDIRECT 2
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
209
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
210 uintptr_t ngx_escape_uri(u_char *dst, u_char *src, size_t size,
493
975f62e77f02 nginx-0.1.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
211 ngx_uint_t type);
601
77f77f53214a nginx-0.3.22-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
212 void ngx_unescape_uri(u_char **dst, u_char **src, size_t size, ngx_uint_t type);
1544
998c44b19e30 ngx_escape_html()
Igor Sysoev <igor@sysoev.ru>
parents: 1542
diff changeset
213 uintptr_t ngx_escape_html(u_char *dst, u_char *src, size_t size);
5944
33c08d7e2915 Autoindex: implemented JSON output format.
Valentin Bartenev <vbart@nginx.com>
parents: 5551
diff changeset
214 uintptr_t ngx_escape_json(u_char *dst, u_char *src, size_t size);
1544
998c44b19e30 ngx_escape_html()
Igor Sysoev <igor@sysoev.ru>
parents: 1542
diff changeset
215
408
d6e2b445c1b8 nginx-0.0.10-2004-08-27-19:40:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 338
diff changeset
216
3641
6802ba529ec4 change ngx_http_variable_value_node_t to more generic ngx_str_node_t
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
217 typedef struct {
6802ba529ec4 change ngx_http_variable_value_node_t to more generic ngx_str_node_t
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
218 ngx_rbtree_node_t node;
6802ba529ec4 change ngx_http_variable_value_node_t to more generic ngx_str_node_t
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
219 ngx_str_t str;
6802ba529ec4 change ngx_http_variable_value_node_t to more generic ngx_str_node_t
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
220 } ngx_str_node_t;
6802ba529ec4 change ngx_http_variable_value_node_t to more generic ngx_str_node_t
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
221
6802ba529ec4 change ngx_http_variable_value_node_t to more generic ngx_str_node_t
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
222
6802ba529ec4 change ngx_http_variable_value_node_t to more generic ngx_str_node_t
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
223 void ngx_str_rbtree_insert_value(ngx_rbtree_node_t *temp,
6802ba529ec4 change ngx_http_variable_value_node_t to more generic ngx_str_node_t
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
224 ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);
6802ba529ec4 change ngx_http_variable_value_node_t to more generic ngx_str_node_t
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
225 ngx_str_node_t *ngx_str_rbtree_lookup(ngx_rbtree_t *rbtree, ngx_str_t *name,
6802ba529ec4 change ngx_http_variable_value_node_t to more generic ngx_str_node_t
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
226 uint32_t hash);
6802ba529ec4 change ngx_http_variable_value_node_t to more generic ngx_str_node_t
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
227
174
ea464a6c0581 nginx-0.0.1-2003-11-05-01:12:39 import
Igor Sysoev <igor@sysoev.ru>
parents: 135
diff changeset
228
1208
5eae5751507f ngx_sort
Igor Sysoev <igor@sysoev.ru>
parents: 1205
diff changeset
229 void ngx_sort(void *base, size_t n, size_t size,
1956
cb8c0c8e0c27 use ngx_int_t in ngx_sort() callback
Igor Sysoev <igor@sysoev.ru>
parents: 1745
diff changeset
230 ngx_int_t (*cmp)(const void *, const void *));
1333
07ebeeb55700 escape space, etc in $memcached_key
Igor Sysoev <igor@sysoev.ru>
parents: 1310
diff changeset
231 #define ngx_qsort qsort
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
232
97
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
233
1333
07ebeeb55700 escape space, etc in $memcached_key
Igor Sysoev <igor@sysoev.ru>
parents: 1310
diff changeset
234 #define ngx_value_helper(n) #n
07ebeeb55700 escape space, etc in $memcached_key
Igor Sysoev <igor@sysoev.ru>
parents: 1310
diff changeset
235 #define ngx_value(n) ngx_value_helper(n)
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 84
diff changeset
236
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 84
diff changeset
237
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
238 #endif /* _NGX_STRING_H_INCLUDED_ */