Mercurial > hg > nginx-mail
comparison src/core/ngx_string.h @ 665:0b460e61bdcd default tip
Merge with nginx 1.0.0.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 25 Apr 2011 04:22:17 +0400 |
parents | b4dcae568a2a |
children |
comparison
equal
deleted
inserted
replaced
572:06419a2298a9 | 665:0b460e61bdcd |
---|---|
36 } ngx_variable_value_t; | 36 } ngx_variable_value_t; |
37 | 37 |
38 | 38 |
39 #define ngx_string(str) { sizeof(str) - 1, (u_char *) str } | 39 #define ngx_string(str) { sizeof(str) - 1, (u_char *) str } |
40 #define ngx_null_string { 0, NULL } | 40 #define ngx_null_string { 0, NULL } |
41 #define ngx_str_set(str, text) \ | |
42 (str)->len = sizeof(text) - 1; (str)->data = (u_char *) text | |
43 #define ngx_str_null(str) (str)->len = 0; (str)->data = NULL | |
41 | 44 |
42 | 45 |
43 #define ngx_tolower(c) (u_char) ((c >= 'A' && c <= 'Z') ? (c | 0x20) : c) | 46 #define ngx_tolower(c) (u_char) ((c >= 'A' && c <= 'Z') ? (c | 0x20) : c) |
44 #define ngx_toupper(c) (u_char) ((c >= 'a' && c <= 'z') ? (c & ~0x20) : c) | 47 #define ngx_toupper(c) (u_char) ((c >= 'a' && c <= 'z') ? (c & ~0x20) : c) |
45 | 48 |
84 | 87 |
85 | 88 |
86 #if (NGX_MEMCPY_LIMIT) | 89 #if (NGX_MEMCPY_LIMIT) |
87 | 90 |
88 void *ngx_memcpy(void *dst, void *src, size_t n); | 91 void *ngx_memcpy(void *dst, void *src, size_t n); |
89 #define ngx_cpymem(dst, src, n) ((u_char *) ngx_memcpy(dst, src, n)) + (n) | 92 #define ngx_cpymem(dst, src, n) (((u_char *) ngx_memcpy(dst, src, n)) + (n)) |
90 | 93 |
91 #else | 94 #else |
92 | 95 |
93 /* | 96 /* |
94 * gcc3, msvc, and icc7 compile memcpy() to the inline "rep movs". | 97 * gcc3, msvc, and icc7 compile memcpy() to the inline "rep movs". |
95 * gcc3 compiles memcpy(d, s, 4) to the inline "mov"es. | 98 * gcc3 compiles memcpy(d, s, 4) to the inline "mov"es. |
96 * icc8 compile memcpy(d, s, 4) to the inline "mov"es or XMM moves. | 99 * icc8 compile memcpy(d, s, 4) to the inline "mov"es or XMM moves. |
97 */ | 100 */ |
98 #define ngx_memcpy(dst, src, n) (void) memcpy(dst, src, n) | 101 #define ngx_memcpy(dst, src, n) (void) memcpy(dst, src, n) |
99 #define ngx_cpymem(dst, src, n) ((u_char *) memcpy(dst, src, n)) + (n) | 102 #define ngx_cpymem(dst, src, n) (((u_char *) memcpy(dst, src, n)) + (n)) |
100 | 103 |
101 #endif | 104 #endif |
102 | 105 |
103 | 106 |
104 #if ( __INTEL_COMPILER >= 800 ) | 107 #if ( __INTEL_COMPILER >= 800 ) |
128 #else | 131 #else |
129 | 132 |
130 #define ngx_copy ngx_cpymem | 133 #define ngx_copy ngx_cpymem |
131 | 134 |
132 #endif | 135 #endif |
136 | |
137 | |
138 #define ngx_memmove(dst, src, n) (void) memmove(dst, src, n) | |
139 #define ngx_movemem(dst, src, n) (((u_char *) memmove(dst, src, n)) + (n)) | |
133 | 140 |
134 | 141 |
135 /* msvc and icc7 compile memcmp() to the inline loop */ | 142 /* msvc and icc7 compile memcmp() to the inline loop */ |
136 #define ngx_memcmp(s1, s2, n) memcmp((const char *) s1, (const char *) s2, n) | 143 #define ngx_memcmp(s1, s2, n) memcmp((const char *) s1, (const char *) s2, n) |
137 | 144 |
159 ngx_int_t ngx_rstrncasecmp(u_char *s1, u_char *s2, size_t n); | 166 ngx_int_t ngx_rstrncasecmp(u_char *s1, u_char *s2, size_t n); |
160 ngx_int_t ngx_memn2cmp(u_char *s1, u_char *s2, size_t n1, size_t n2); | 167 ngx_int_t ngx_memn2cmp(u_char *s1, u_char *s2, size_t n1, size_t n2); |
161 ngx_int_t ngx_dns_strcmp(u_char *s1, u_char *s2); | 168 ngx_int_t ngx_dns_strcmp(u_char *s1, u_char *s2); |
162 | 169 |
163 ngx_int_t ngx_atoi(u_char *line, size_t n); | 170 ngx_int_t ngx_atoi(u_char *line, size_t n); |
171 ngx_int_t ngx_atofp(u_char *line, size_t n, size_t point); | |
164 ssize_t ngx_atosz(u_char *line, size_t n); | 172 ssize_t ngx_atosz(u_char *line, size_t n); |
165 off_t ngx_atoof(u_char *line, size_t n); | 173 off_t ngx_atoof(u_char *line, size_t n); |
166 time_t ngx_atotm(u_char *line, size_t n); | 174 time_t ngx_atotm(u_char *line, size_t n); |
167 ngx_int_t ngx_hextoi(u_char *line, size_t n); | 175 ngx_int_t ngx_hextoi(u_char *line, size_t n); |
168 | 176 |
172 #define ngx_base64_encoded_length(len) (((len + 2) / 3) * 4) | 180 #define ngx_base64_encoded_length(len) (((len + 2) / 3) * 4) |
173 #define ngx_base64_decoded_length(len) (((len + 3) / 4) * 3) | 181 #define ngx_base64_decoded_length(len) (((len + 3) / 4) * 3) |
174 | 182 |
175 void ngx_encode_base64(ngx_str_t *dst, ngx_str_t *src); | 183 void ngx_encode_base64(ngx_str_t *dst, ngx_str_t *src); |
176 ngx_int_t ngx_decode_base64(ngx_str_t *dst, ngx_str_t *src); | 184 ngx_int_t ngx_decode_base64(ngx_str_t *dst, ngx_str_t *src); |
185 ngx_int_t ngx_decode_base64url(ngx_str_t *dst, ngx_str_t *src); | |
177 | 186 |
178 uint32_t ngx_utf8_decode(u_char **p, size_t n); | 187 uint32_t ngx_utf8_decode(u_char **p, size_t n); |
179 size_t ngx_utf8_length(u_char *p, size_t n); | 188 size_t ngx_utf8_length(u_char *p, size_t n); |
180 u_char *ngx_utf8_cpystrn(u_char *dst, u_char *src, size_t n, size_t len); | 189 u_char *ngx_utf8_cpystrn(u_char *dst, u_char *src, size_t n, size_t len); |
181 | 190 |
194 ngx_uint_t type); | 203 ngx_uint_t type); |
195 void ngx_unescape_uri(u_char **dst, u_char **src, size_t size, ngx_uint_t type); | 204 void ngx_unescape_uri(u_char **dst, u_char **src, size_t size, ngx_uint_t type); |
196 uintptr_t ngx_escape_html(u_char *dst, u_char *src, size_t size); | 205 uintptr_t ngx_escape_html(u_char *dst, u_char *src, size_t size); |
197 | 206 |
198 | 207 |
208 typedef struct { | |
209 ngx_rbtree_node_t node; | |
210 ngx_str_t str; | |
211 } ngx_str_node_t; | |
212 | |
213 | |
214 void ngx_str_rbtree_insert_value(ngx_rbtree_node_t *temp, | |
215 ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel); | |
216 ngx_str_node_t *ngx_str_rbtree_lookup(ngx_rbtree_t *rbtree, ngx_str_t *name, | |
217 uint32_t hash); | |
218 | |
199 | 219 |
200 void ngx_sort(void *base, size_t n, size_t size, | 220 void ngx_sort(void *base, size_t n, size_t size, |
201 ngx_int_t (*cmp)(const void *, const void *)); | 221 ngx_int_t (*cmp)(const void *, const void *)); |
202 #define ngx_qsort qsort | 222 #define ngx_qsort qsort |
203 | 223 |