~ubuntu-branches/ubuntu/trusty/nginx/trusty-proposed

« back to all changes in this revision

Viewing changes to src/core/ngx_string.h

  • Committer: Package Import Robot
  • Author(s): Kartik Mistry
  • Date: 2013-04-25 12:51:45 UTC
  • mfrom: (1.3.28)
  • mto: (1.3.29) (15.1.2 experimental)
  • mto: This revision was merged to the branch mainline in revision 64.
  • Revision ID: package-import@ubuntu.com-20130425125145-ugl0wor6bq0u5eae
Tags: upstream-1.4.0
ImportĀ upstreamĀ versionĀ 1.4.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
 
2
2
/*
3
3
 * Copyright (C) Igor Sysoev
 
4
 * Copyright (C) Nginx, Inc.
4
5
 */
5
6
 
6
7
 
38
39
 
39
40
#define ngx_string(str)     { sizeof(str) - 1, (u_char *) str }
40
41
#define ngx_null_string     { 0, NULL }
 
42
#define ngx_str_set(str, text)                                               \
 
43
    (str)->len = sizeof(text) - 1; (str)->data = (u_char *) text
 
44
#define ngx_str_null(str)   (str)->len = 0; (str)->data = NULL
41
45
 
42
46
 
43
47
#define ngx_tolower(c)      (u_char) ((c >= 'A' && c <= 'Z') ? (c | 0x20) : c)
44
48
#define ngx_toupper(c)      (u_char) ((c >= 'a' && c <= 'z') ? (c & ~0x20) : c)
45
49
 
 
50
void ngx_strlow(u_char *dst, u_char *src, size_t n);
 
51
 
46
52
 
47
53
#define ngx_strncmp(s1, s2, n)  strncmp((const char *) s1, (const char *) s2, n)
48
54
 
52
58
 
53
59
 
54
60
#define ngx_strstr(s1, s2)  strstr((const char *) s1, (const char *) s2)
 
61
#define ngx_strlen(s)       strlen((const char *) s)
 
62
 
55
63
#define ngx_strchr(s1, c)   strchr((const char *) s1, (int) c)
56
 
#define ngx_strlen(s)       strlen((const char *) s)
 
64
 
 
65
static ngx_inline u_char *
 
66
ngx_strlchr(u_char *p, u_char *last, u_char c)
 
67
{
 
68
    while (p < last) {
 
69
 
 
70
        if (*p == c) {
 
71
            return p;
 
72
        }
 
73
 
 
74
        p++;
 
75
    }
 
76
 
 
77
    return NULL;
 
78
}
57
79
 
58
80
 
59
81
/*
67
89
 
68
90
#if (NGX_MEMCPY_LIMIT)
69
91
 
70
 
void *ngx_memcpy(void *dst, void *src, size_t n);
71
 
#define ngx_cpymem(dst, src, n)   ((u_char *) ngx_memcpy(dst, src, n)) + (n)
 
92
void *ngx_memcpy(void *dst, const void *src, size_t n);
 
93
#define ngx_cpymem(dst, src, n)   (((u_char *) ngx_memcpy(dst, src, n)) + (n))
72
94
 
73
95
#else
74
96
 
78
100
 * icc8 compile memcpy(d, s, 4) to the inline "mov"es or XMM moves.
79
101
 */
80
102
#define ngx_memcpy(dst, src, n)   (void) memcpy(dst, src, n)
81
 
#define ngx_cpymem(dst, src, n)   ((u_char *) memcpy(dst, src, n)) + (n)
 
103
#define ngx_cpymem(dst, src, n)   (((u_char *) memcpy(dst, src, n)) + (n))
82
104
 
83
105
#endif
84
106
 
114
136
#endif
115
137
 
116
138
 
 
139
#define ngx_memmove(dst, src, n)   (void) memmove(dst, src, n)
 
140
#define ngx_movemem(dst, src, n)   (((u_char *) memmove(dst, src, n)) + (n))
 
141
 
 
142
 
117
143
/* msvc and icc7 compile memcmp() to the inline loop */
118
144
#define ngx_memcmp(s1, s2, n)  memcmp((const char *) s1, (const char *) s2, n)
119
145
 
122
148
u_char *ngx_pstrdup(ngx_pool_t *pool, ngx_str_t *src);
123
149
u_char * ngx_cdecl ngx_sprintf(u_char *buf, const char *fmt, ...);
124
150
u_char * ngx_cdecl ngx_snprintf(u_char *buf, size_t max, const char *fmt, ...);
125
 
u_char *ngx_vsnprintf(u_char *buf, size_t max, const char *fmt, va_list args);
 
151
u_char * ngx_cdecl ngx_slprintf(u_char *buf, u_char *last, const char *fmt,
 
152
    ...);
 
153
u_char *ngx_vslprintf(u_char *buf, u_char *last, const char *fmt, va_list args);
 
154
#define ngx_vsnprintf(buf, max, fmt, args)                                   \
 
155
    ngx_vslprintf(buf, buf + (max), fmt, args)
126
156
 
127
157
ngx_int_t ngx_strcasecmp(u_char *s1, u_char *s2);
128
158
ngx_int_t ngx_strncasecmp(u_char *s1, u_char *s2, size_t n);
131
161
 
132
162
u_char *ngx_strstrn(u_char *s1, char *s2, size_t n);
133
163
u_char *ngx_strcasestrn(u_char *s1, char *s2, size_t n);
 
164
u_char *ngx_strlcasestrn(u_char *s1, u_char *last, u_char *s2, size_t n);
134
165
 
135
166
ngx_int_t ngx_rstrncmp(u_char *s1, u_char *s2, size_t n);
136
167
ngx_int_t ngx_rstrncasecmp(u_char *s1, u_char *s2, size_t n);
137
168
ngx_int_t ngx_memn2cmp(u_char *s1, u_char *s2, size_t n1, size_t n2);
 
169
ngx_int_t ngx_dns_strcmp(u_char *s1, u_char *s2);
138
170
 
139
171
ngx_int_t ngx_atoi(u_char *line, size_t n);
 
172
ngx_int_t ngx_atofp(u_char *line, size_t n, size_t point);
140
173
ssize_t ngx_atosz(u_char *line, size_t n);
141
174
off_t ngx_atoof(u_char *line, size_t n);
142
175
time_t ngx_atotm(u_char *line, size_t n);
150
183
 
151
184
void ngx_encode_base64(ngx_str_t *dst, ngx_str_t *src);
152
185
ngx_int_t ngx_decode_base64(ngx_str_t *dst, ngx_str_t *src);
153
 
 
154
 
uint32_t ngx_utf_decode(u_char **p, size_t n);
155
 
size_t ngx_utf_length(u_char *p, size_t n);
156
 
u_char *ngx_utf_cpystrn(u_char *dst, u_char *src, size_t n);
157
 
 
158
 
 
159
 
#define NGX_ESCAPE_URI         0
160
 
#define NGX_ESCAPE_ARGS        1
161
 
#define NGX_ESCAPE_HTML        2
162
 
#define NGX_ESCAPE_REFRESH     3
163
 
#define NGX_ESCAPE_MEMCACHED   4
164
 
#define NGX_ESCAPE_MAIL_AUTH   5
 
186
ngx_int_t ngx_decode_base64url(ngx_str_t *dst, ngx_str_t *src);
 
187
 
 
188
uint32_t ngx_utf8_decode(u_char **p, size_t n);
 
189
size_t ngx_utf8_length(u_char *p, size_t n);
 
190
u_char *ngx_utf8_cpystrn(u_char *dst, u_char *src, size_t n, size_t len);
 
191
 
 
192
 
 
193
#define NGX_ESCAPE_URI            0
 
194
#define NGX_ESCAPE_ARGS           1
 
195
#define NGX_ESCAPE_URI_COMPONENT  2
 
196
#define NGX_ESCAPE_HTML           3
 
197
#define NGX_ESCAPE_REFRESH        4
 
198
#define NGX_ESCAPE_MEMCACHED      5
 
199
#define NGX_ESCAPE_MAIL_AUTH      6
165
200
 
166
201
#define NGX_UNESCAPE_URI       1
167
202
#define NGX_UNESCAPE_REDIRECT  2
172
207
uintptr_t ngx_escape_html(u_char *dst, u_char *src, size_t size);
173
208
 
174
209
 
 
210
typedef struct {
 
211
    ngx_rbtree_node_t         node;
 
212
    ngx_str_t                 str;
 
213
} ngx_str_node_t;
 
214
 
 
215
 
 
216
void ngx_str_rbtree_insert_value(ngx_rbtree_node_t *temp,
 
217
    ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);
 
218
ngx_str_node_t *ngx_str_rbtree_lookup(ngx_rbtree_t *rbtree, ngx_str_t *name,
 
219
    uint32_t hash);
 
220
 
175
221
 
176
222
void ngx_sort(void *base, size_t n, size_t size,
177
223
    ngx_int_t (*cmp)(const void *, const void *));