annotate src/core/ngx_string.h @ 436:9b19e26b2660

Mail: smtp pipelining support. Basically, this does the following two changes (and corresponding modifications of related code): 1. Does not reset session buffer unless it's reached it's end, and always wait for LF to terminate command (even if we detected invalid command). 2. Record command name as the first argument to make it available for handlers (since now we can't assume that command starts from s->buffer->start).
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 11 Sep 2008 15:26:25 +0400
parents 6ebbca3d5ed7
children 09f0ef15d544
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
1
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
2 /*
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
3 * Copyright (C) Igor Sysoev
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
4 */
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
5
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
6
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
7 #ifndef _NGX_STRING_H_INCLUDED_
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
8 #define _NGX_STRING_H_INCLUDED_
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
9
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
10
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
11 #include <ngx_config.h>
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
12 #include <ngx_core.h>
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
13
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
14
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
15 typedef struct {
320
95183808f549 nginx 0.6.4
Igor Sysoev <http://sysoev.ru>
parents: 302
diff changeset
16 size_t len;
95183808f549 nginx 0.6.4
Igor Sysoev <http://sysoev.ru>
parents: 302
diff changeset
17 u_char *data;
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
18 } ngx_str_t;
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
19
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
20
198
e6da4931e0e0 nginx 0.3.46
Igor Sysoev <http://sysoev.ru>
parents: 150
diff changeset
21 typedef struct {
320
95183808f549 nginx 0.6.4
Igor Sysoev <http://sysoev.ru>
parents: 302
diff changeset
22 ngx_str_t key;
95183808f549 nginx 0.6.4
Igor Sysoev <http://sysoev.ru>
parents: 302
diff changeset
23 ngx_str_t value;
198
e6da4931e0e0 nginx 0.3.46
Igor Sysoev <http://sysoev.ru>
parents: 150
diff changeset
24 } ngx_keyval_t;
e6da4931e0e0 nginx 0.3.46
Igor Sysoev <http://sysoev.ru>
parents: 150
diff changeset
25
e6da4931e0e0 nginx 0.3.46
Igor Sysoev <http://sysoev.ru>
parents: 150
diff changeset
26
320
95183808f549 nginx 0.6.4
Igor Sysoev <http://sysoev.ru>
parents: 302
diff changeset
27 typedef struct {
376
edf1cb6c328e nginx 0.7.0
Igor Sysoev <http://sysoev.ru>
parents: 372
diff changeset
28 unsigned len:28;
320
95183808f549 nginx 0.6.4
Igor Sysoev <http://sysoev.ru>
parents: 302
diff changeset
29
95183808f549 nginx 0.6.4
Igor Sysoev <http://sysoev.ru>
parents: 302
diff changeset
30 unsigned valid:1;
340
10cc350ed8a1 nginx 0.6.14
Igor Sysoev <http://sysoev.ru>
parents: 328
diff changeset
31 unsigned no_cacheable:1;
320
95183808f549 nginx 0.6.4
Igor Sysoev <http://sysoev.ru>
parents: 302
diff changeset
32 unsigned not_found:1;
376
edf1cb6c328e nginx 0.7.0
Igor Sysoev <http://sysoev.ru>
parents: 372
diff changeset
33 unsigned escape:1;
320
95183808f549 nginx 0.6.4
Igor Sysoev <http://sysoev.ru>
parents: 302
diff changeset
34
95183808f549 nginx 0.6.4
Igor Sysoev <http://sysoev.ru>
parents: 302
diff changeset
35 u_char *data;
95183808f549 nginx 0.6.4
Igor Sysoev <http://sysoev.ru>
parents: 302
diff changeset
36 } ngx_variable_value_t;
95183808f549 nginx 0.6.4
Igor Sysoev <http://sysoev.ru>
parents: 302
diff changeset
37
95183808f549 nginx 0.6.4
Igor Sysoev <http://sysoev.ru>
parents: 302
diff changeset
38
286
5bef04fc3fd5 nginx 0.5.13
Igor Sysoev <http://sysoev.ru>
parents: 274
diff changeset
39 #define ngx_string(str) { sizeof(str) - 1, (u_char *) str }
5bef04fc3fd5 nginx 0.5.13
Igor Sysoev <http://sysoev.ru>
parents: 274
diff changeset
40 #define ngx_null_string { 0, NULL }
26
45fe5b98a9de nginx 0.1.13
Igor Sysoev <http://sysoev.ru>
parents: 10
diff changeset
41
45fe5b98a9de nginx 0.1.13
Igor Sysoev <http://sysoev.ru>
parents: 10
diff changeset
42
286
5bef04fc3fd5 nginx 0.5.13
Igor Sysoev <http://sysoev.ru>
parents: 274
diff changeset
43 #define ngx_tolower(c) (u_char) ((c >= 'A' && c <= 'Z') ? (c | 0x20) : c)
5bef04fc3fd5 nginx 0.5.13
Igor Sysoev <http://sysoev.ru>
parents: 274
diff changeset
44 #define ngx_toupper(c) (u_char) ((c >= 'a' && c <= 'z') ? (c & ~0x20) : c)
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
45
392
34fb3a573548 nginx 0.7.8
Igor Sysoev <http://sysoev.ru>
parents: 390
diff changeset
46 void ngx_strlow(u_char *dst, u_char *src, size_t n);
34fb3a573548 nginx 0.7.8
Igor Sysoev <http://sysoev.ru>
parents: 390
diff changeset
47
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
48
10
46833bd150cb nginx 0.1.5
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
49 #define ngx_strncmp(s1, s2, n) strncmp((const char *) s1, (const char *) s2, n)
46833bd150cb nginx 0.1.5
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
50
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
51
122
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
52 /* msvc and icc7 compile strcmp() to inline loop */
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
53 #define ngx_strcmp(s1, s2) strcmp((const char *) s1, (const char *) s2)
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
54
10
46833bd150cb nginx 0.1.5
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
55
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
56 #define ngx_strstr(s1, s2) strstr((const char *) s1, (const char *) s2)
421
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
57 #define ngx_strlen(s) strlen((const char *) s)
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
58
294
27d9d1f26b38 nginx 0.5.17
Igor Sysoev <http://sysoev.ru>
parents: 286
diff changeset
59 #define ngx_strchr(s1, c) strchr((const char *) s1, (int) c)
421
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
60
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
61 static ngx_inline u_char *
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
62 ngx_strlchr(u_char *p, u_char *last, u_char c)
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
63 {
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
64 while (p < last) {
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
65
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
66 if (*p == c) {
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
67 return p;
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
68 }
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
69
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
70 p++;
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
71 }
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
72
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
73 return NULL;
6ebbca3d5ed7 nginx 0.7.12
Igor Sysoev <http://sysoev.ru>
parents: 392
diff changeset
74 }
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
75
10
46833bd150cb nginx 0.1.5
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
76
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
77 /*
122
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
78 * msvc and icc7 compile memset() to the inline "rep stos"
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
79 * while ZeroMemory() and bzero() are the calls.
122
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
80 * icc7 may also inline several mov's of a zeroed register for small blocks.
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
81 */
64
5db440287648 nginx 0.1.32
Igor Sysoev <http://sysoev.ru>
parents: 52
diff changeset
82 #define ngx_memzero(buf, n) (void) memset(buf, 0, n)
5db440287648 nginx 0.1.32
Igor Sysoev <http://sysoev.ru>
parents: 52
diff changeset
83 #define ngx_memset(buf, c, n) (void) memset(buf, c, n)
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
84
10
46833bd150cb nginx 0.1.5
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
85
132
91372f004adf nginx 0.3.13
Igor Sysoev <http://sysoev.ru>
parents: 126
diff changeset
86 #if (NGX_MEMCPY_LIMIT)
91372f004adf nginx 0.3.13
Igor Sysoev <http://sysoev.ru>
parents: 126
diff changeset
87
91372f004adf nginx 0.3.13
Igor Sysoev <http://sysoev.ru>
parents: 126
diff changeset
88 void *ngx_memcpy(void *dst, void *src, size_t n);
91372f004adf nginx 0.3.13
Igor Sysoev <http://sysoev.ru>
parents: 126
diff changeset
89 #define ngx_cpymem(dst, src, n) ((u_char *) ngx_memcpy(dst, src, n)) + (n)
91372f004adf nginx 0.3.13
Igor Sysoev <http://sysoev.ru>
parents: 126
diff changeset
90
91372f004adf nginx 0.3.13
Igor Sysoev <http://sysoev.ru>
parents: 126
diff changeset
91 #else
91372f004adf nginx 0.3.13
Igor Sysoev <http://sysoev.ru>
parents: 126
diff changeset
92
122
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
93 /*
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
94 * gcc3, msvc, and icc7 compile memcpy() to the inline "rep movs".
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
95 * gcc3 compiles memcpy(d, s, 4) to the inline "mov"es.
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
96 * icc8 compile memcpy(d, s, 4) to the inline "mov"es or XMM moves.
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
97 */
64
5db440287648 nginx 0.1.32
Igor Sysoev <http://sysoev.ru>
parents: 52
diff changeset
98 #define ngx_memcpy(dst, src, n) (void) memcpy(dst, src, n)
28
7ca9bdc82b3f nginx 0.1.14
Igor Sysoev <http://sysoev.ru>
parents: 26
diff changeset
99 #define ngx_cpymem(dst, src, n) ((u_char *) memcpy(dst, src, n)) + (n)
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
100
132
91372f004adf nginx 0.3.13
Igor Sysoev <http://sysoev.ru>
parents: 126
diff changeset
101 #endif
91372f004adf nginx 0.3.13
Igor Sysoev <http://sysoev.ru>
parents: 126
diff changeset
102
10
46833bd150cb nginx 0.1.5
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
103
122
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
104 #if ( __INTEL_COMPILER >= 800 )
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
105
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
106 /*
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
107 * the simple inline cycle copies the variable length strings up to 16
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
108 * bytes faster than icc8 autodetecting _intel_fast_memcpy()
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
109 */
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
110
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
111 static ngx_inline u_char *
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
112 ngx_copy(u_char *dst, u_char *src, size_t len)
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
113 {
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
114 if (len < 17) {
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
115
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
116 while (len) {
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
117 *dst++ = *src++;
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
118 len--;
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
119 }
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
120
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
121 return dst;
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
122
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
123 } else {
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
124 return ngx_cpymem(dst, src, len);
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
125 }
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
126 }
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
127
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
128 #else
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
129
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
130 #define ngx_copy ngx_cpymem
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
131
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
132 #endif
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
133
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
134
d25a1d6034f1 nginx 0.3.8
Igor Sysoev <http://sysoev.ru>
parents: 76
diff changeset
135 /* msvc and icc7 compile memcmp() to the inline loop */
348
e10168d6e371 nginx 0.6.18
Igor Sysoev <http://sysoev.ru>
parents: 342
diff changeset
136 #define ngx_memcmp(s1, s2, n) memcmp((const char *) s1, (const char *) s2, n)
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
137
10
46833bd150cb nginx 0.1.5
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
138
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
139 u_char *ngx_cpystrn(u_char *dst, u_char *src, size_t n);
34
aab2ea7c0458 nginx 0.1.17
Igor Sysoev <http://sysoev.ru>
parents: 28
diff changeset
140 u_char *ngx_pstrdup(ngx_pool_t *pool, ngx_str_t *src);
52
0d75d65c642f nginx 0.1.26
Igor Sysoev <http://sysoev.ru>
parents: 50
diff changeset
141 u_char * ngx_cdecl ngx_sprintf(u_char *buf, const char *fmt, ...);
0d75d65c642f nginx 0.1.26
Igor Sysoev <http://sysoev.ru>
parents: 50
diff changeset
142 u_char * ngx_cdecl ngx_snprintf(u_char *buf, size_t max, const char *fmt, ...);
10
46833bd150cb nginx 0.1.5
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
143 u_char *ngx_vsnprintf(u_char *buf, size_t max, const char *fmt, va_list args);
4
4b2dafa26fe2 nginx 0.1.2
Igor Sysoev <http://sysoev.ru>
parents: 2
diff changeset
144
286
5bef04fc3fd5 nginx 0.5.13
Igor Sysoev <http://sysoev.ru>
parents: 274
diff changeset
145 ngx_int_t ngx_strcasecmp(u_char *s1, u_char *s2);
5bef04fc3fd5 nginx 0.5.13
Igor Sysoev <http://sysoev.ru>
parents: 274
diff changeset
146 ngx_int_t ngx_strncasecmp(u_char *s1, u_char *s2, size_t n);
5bef04fc3fd5 nginx 0.5.13
Igor Sysoev <http://sysoev.ru>
parents: 274
diff changeset
147
340
10cc350ed8a1 nginx 0.6.14
Igor Sysoev <http://sysoev.ru>
parents: 328
diff changeset
148 u_char *ngx_strnstr(u_char *s1, char *s2, size_t n);
10cc350ed8a1 nginx 0.6.14
Igor Sysoev <http://sysoev.ru>
parents: 328
diff changeset
149
10cc350ed8a1 nginx 0.6.14
Igor Sysoev <http://sysoev.ru>
parents: 328
diff changeset
150 u_char *ngx_strstrn(u_char *s1, char *s2, size_t n);
10cc350ed8a1 nginx 0.6.14
Igor Sysoev <http://sysoev.ru>
parents: 328
diff changeset
151 u_char *ngx_strcasestrn(u_char *s1, char *s2, size_t n);
10cc350ed8a1 nginx 0.6.14
Igor Sysoev <http://sysoev.ru>
parents: 328
diff changeset
152
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
153 ngx_int_t ngx_rstrncmp(u_char *s1, u_char *s2, size_t n);
4
4b2dafa26fe2 nginx 0.1.2
Igor Sysoev <http://sysoev.ru>
parents: 2
diff changeset
154 ngx_int_t ngx_rstrncasecmp(u_char *s1, u_char *s2, size_t n);
274
052a7b1d40e5 nginx 0.5.7
Igor Sysoev <http://sysoev.ru>
parents: 206
diff changeset
155 ngx_int_t ngx_memn2cmp(u_char *s1, u_char *s2, size_t n1, size_t n2);
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
156
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
157 ngx_int_t ngx_atoi(u_char *line, size_t n);
50
72eb30262aac nginx 0.1.25
Igor Sysoev <http://sysoev.ru>
parents: 42
diff changeset
158 ssize_t ngx_atosz(u_char *line, size_t n);
72eb30262aac nginx 0.1.25
Igor Sysoev <http://sysoev.ru>
parents: 42
diff changeset
159 off_t ngx_atoof(u_char *line, size_t n);
72eb30262aac nginx 0.1.25
Igor Sysoev <http://sysoev.ru>
parents: 42
diff changeset
160 time_t ngx_atotm(u_char *line, size_t n);
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
161 ngx_int_t ngx_hextoi(u_char *line, size_t n);
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
162
356
b743d290eb3b nginx 0.6.22
Igor Sysoev <http://sysoev.ru>
parents: 348
diff changeset
163 u_char *ngx_hex_dump(u_char *dst, u_char *src, size_t len);
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
164
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
165
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
166 #define ngx_base64_encoded_length(len) (((len + 2) / 3) * 4)
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
167 #define ngx_base64_decoded_length(len) (((len + 3) / 4) * 3)
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
168
2
cc9f381affaa nginx 0.1.1
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
169 void ngx_encode_base64(ngx_str_t *dst, ngx_str_t *src);
cc9f381affaa nginx 0.1.1
Igor Sysoev <http://sysoev.ru>
parents: 0
diff changeset
170 ngx_int_t ngx_decode_base64(ngx_str_t *dst, ngx_str_t *src);
10
46833bd150cb nginx 0.1.5
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
171
390
0b6053502c55 nginx 0.7.7
Igor Sysoev <http://sysoev.ru>
parents: 376
diff changeset
172 uint32_t ngx_utf8_decode(u_char **p, size_t n);
0b6053502c55 nginx 0.7.7
Igor Sysoev <http://sysoev.ru>
parents: 376
diff changeset
173 size_t ngx_utf8_length(u_char *p, size_t n);
0b6053502c55 nginx 0.7.7
Igor Sysoev <http://sysoev.ru>
parents: 376
diff changeset
174 u_char *ngx_utf8_cpystrn(u_char *dst, u_char *src, size_t n, size_t len);
76
da9a3b14312d nginx 0.1.38
Igor Sysoev <http://sysoev.ru>
parents: 72
diff changeset
175
10
46833bd150cb nginx 0.1.5
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
176
342
4276c2f1f434 nginx 0.6.15
Igor Sysoev <http://sysoev.ru>
parents: 340
diff changeset
177 #define NGX_ESCAPE_URI 0
4276c2f1f434 nginx 0.6.15
Igor Sysoev <http://sysoev.ru>
parents: 340
diff changeset
178 #define NGX_ESCAPE_ARGS 1
4276c2f1f434 nginx 0.6.15
Igor Sysoev <http://sysoev.ru>
parents: 340
diff changeset
179 #define NGX_ESCAPE_HTML 2
4276c2f1f434 nginx 0.6.15
Igor Sysoev <http://sysoev.ru>
parents: 340
diff changeset
180 #define NGX_ESCAPE_REFRESH 3
4276c2f1f434 nginx 0.6.15
Igor Sysoev <http://sysoev.ru>
parents: 340
diff changeset
181 #define NGX_ESCAPE_MEMCACHED 4
4276c2f1f434 nginx 0.6.15
Igor Sysoev <http://sysoev.ru>
parents: 340
diff changeset
182 #define NGX_ESCAPE_MAIL_AUTH 5
150
50bd986c5d63 nginx 0.3.22
Igor Sysoev <http://sysoev.ru>
parents: 132
diff changeset
183
342
4276c2f1f434 nginx 0.6.15
Igor Sysoev <http://sysoev.ru>
parents: 340
diff changeset
184 #define NGX_UNESCAPE_URI 1
4276c2f1f434 nginx 0.6.15
Igor Sysoev <http://sysoev.ru>
parents: 340
diff changeset
185 #define NGX_UNESCAPE_REDIRECT 2
10
46833bd150cb nginx 0.1.5
Igor Sysoev <http://sysoev.ru>
parents: 4
diff changeset
186
34
aab2ea7c0458 nginx 0.1.17
Igor Sysoev <http://sysoev.ru>
parents: 28
diff changeset
187 uintptr_t ngx_escape_uri(u_char *dst, u_char *src, size_t size,
42
41ccba1aba45 nginx 0.1.21
Igor Sysoev <http://sysoev.ru>
parents: 34
diff changeset
188 ngx_uint_t type);
150
50bd986c5d63 nginx 0.3.22
Igor Sysoev <http://sysoev.ru>
parents: 132
diff changeset
189 void ngx_unescape_uri(u_char **dst, u_char **src, size_t size, ngx_uint_t type);
340
10cc350ed8a1 nginx 0.6.14
Igor Sysoev <http://sysoev.ru>
parents: 328
diff changeset
190 uintptr_t ngx_escape_html(u_char *dst, u_char *src, size_t size);
10cc350ed8a1 nginx 0.6.14
Igor Sysoev <http://sysoev.ru>
parents: 328
diff changeset
191
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
192
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
193
302
9b7db0df50f0 nginx 0.5.21
Igor Sysoev <http://sysoev.ru>
parents: 294
diff changeset
194 void ngx_sort(void *base, size_t n, size_t size,
372
6639b93e81b2 nginx 0.6.30
Igor Sysoev <http://sysoev.ru>
parents: 356
diff changeset
195 ngx_int_t (*cmp)(const void *, const void *));
322
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 320
diff changeset
196 #define ngx_qsort qsort
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
197
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
198
322
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 320
diff changeset
199 #define ngx_value_helper(n) #n
d16d691432c9 nginx 0.6.5
Igor Sysoev <http://sysoev.ru>
parents: 320
diff changeset
200 #define ngx_value(n) ngx_value_helper(n)
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
201
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
202
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
203 #endif /* _NGX_STRING_H_INCLUDED_ */