Mercurial > hg > nginx
annotate src/core/ngx_conf_file.c @ 7573:ce2ced385690 release-1.17.4
nginx-1.17.4-RELEASE
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Tue, 24 Sep 2019 18:08:48 +0300 |
parents | d864ee67b5ae |
children | 485dba3e2a01 |
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:
440
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:
440
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 | 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:
440
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:
440
diff
changeset
|
6 |
10
4f3879d9b6f6
nginx-0.0.1-2002-09-11-19:18:33 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
7 |
4f3879d9b6f6
nginx-0.0.1-2002-09-11-19:18:33 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
8 #include <ngx_config.h> |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
9 #include <ngx_core.h> |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
10 |
2222
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
11 #define NGX_CONF_BUFFER 4096 |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
12 |
6776
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
13 static ngx_int_t ngx_conf_add_dump(ngx_conf_t *cf, ngx_str_t *filename); |
501 | 14 static ngx_int_t ngx_conf_handler(ngx_conf_t *cf, ngx_int_t last); |
503 | 15 static ngx_int_t ngx_conf_read_token(ngx_conf_t *cf); |
571 | 16 static void ngx_conf_flush_files(ngx_cycle_t *cycle); |
336
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
17 |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
18 |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
19 static ngx_command_t ngx_conf_commands[] = { |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
20 |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
21 { ngx_string("include"), |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
22 NGX_ANY_CONF|NGX_CONF_TAKE1, |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
23 ngx_conf_include, |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
24 0, |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
25 0, |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
26 NULL }, |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
27 |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
28 ngx_null_command |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
29 }; |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
30 |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
31 |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
32 ngx_module_t ngx_conf_module = { |
509 | 33 NGX_MODULE_V1, |
336
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
34 NULL, /* module context */ |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
35 ngx_conf_commands, /* module directives */ |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
36 NGX_CONF_MODULE, /* module type */ |
541 | 37 NULL, /* init master */ |
336
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
38 NULL, /* init module */ |
541 | 39 NULL, /* init process */ |
40 NULL, /* init thread */ | |
41 NULL, /* exit thread */ | |
571 | 42 ngx_conf_flush_files, /* exit process */ |
541 | 43 NULL, /* exit master */ |
44 NGX_MODULE_V1_PADDING | |
336
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
45 }; |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
46 |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
47 |
2222
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
48 /* The eight fixed arguments */ |
155
46eb23d9471d
nginx-0.0.1-2003-10-22-20:38:26 import
Igor Sysoev <igor@sysoev.ru>
parents:
141
diff
changeset
|
49 |
2214 | 50 static ngx_uint_t argument_number[] = { |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
51 NGX_CONF_NOARGS, |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
52 NGX_CONF_TAKE1, |
155
46eb23d9471d
nginx-0.0.1-2003-10-22-20:38:26 import
Igor Sysoev <igor@sysoev.ru>
parents:
141
diff
changeset
|
53 NGX_CONF_TAKE2, |
46eb23d9471d
nginx-0.0.1-2003-10-22-20:38:26 import
Igor Sysoev <igor@sysoev.ru>
parents:
141
diff
changeset
|
54 NGX_CONF_TAKE3, |
46eb23d9471d
nginx-0.0.1-2003-10-22-20:38:26 import
Igor Sysoev <igor@sysoev.ru>
parents:
141
diff
changeset
|
55 NGX_CONF_TAKE4, |
46eb23d9471d
nginx-0.0.1-2003-10-22-20:38:26 import
Igor Sysoev <igor@sysoev.ru>
parents:
141
diff
changeset
|
56 NGX_CONF_TAKE5, |
46eb23d9471d
nginx-0.0.1-2003-10-22-20:38:26 import
Igor Sysoev <igor@sysoev.ru>
parents:
141
diff
changeset
|
57 NGX_CONF_TAKE6, |
311
11ff50a35d6d
nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
300
diff
changeset
|
58 NGX_CONF_TAKE7 |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
59 }; |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
60 |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
61 |
503 | 62 char * |
2073 | 63 ngx_conf_param(ngx_conf_t *cf) |
64 { | |
2772
9b107cdf53f6
*) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents:
2765
diff
changeset
|
65 char *rv; |
2073 | 66 ngx_str_t *param; |
67 ngx_buf_t b; | |
68 ngx_conf_file_t conf_file; | |
69 | |
70 param = &cf->cycle->conf_param; | |
71 | |
72 if (param->len == 0) { | |
73 return NGX_CONF_OK; | |
74 } | |
75 | |
76 ngx_memzero(&conf_file, sizeof(ngx_conf_file_t)); | |
77 | |
78 ngx_memzero(&b, sizeof(ngx_buf_t)); | |
79 | |
80 b.start = param->data; | |
81 b.pos = param->data; | |
82 b.last = param->data + param->len; | |
83 b.end = b.last; | |
84 b.temporary = 1; | |
85 | |
86 conf_file.file.fd = NGX_INVALID_FILE; | |
2772
9b107cdf53f6
*) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents:
2765
diff
changeset
|
87 conf_file.file.name.data = NULL; |
9b107cdf53f6
*) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents:
2765
diff
changeset
|
88 conf_file.line = 0; |
2073 | 89 |
90 cf->conf_file = &conf_file; | |
91 cf->conf_file->buffer = &b; | |
92 | |
2772
9b107cdf53f6
*) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents:
2765
diff
changeset
|
93 rv = ngx_conf_parse(cf, NULL); |
9b107cdf53f6
*) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents:
2765
diff
changeset
|
94 |
9b107cdf53f6
*) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents:
2765
diff
changeset
|
95 cf->conf_file = NULL; |
9b107cdf53f6
*) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents:
2765
diff
changeset
|
96 |
9b107cdf53f6
*) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents:
2765
diff
changeset
|
97 return rv; |
2073 | 98 } |
99 | |
100 | |
6776
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
101 static ngx_int_t |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
102 ngx_conf_add_dump(ngx_conf_t *cf, ngx_str_t *filename) |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
103 { |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
104 off_t size; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
105 u_char *p; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
106 uint32_t hash; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
107 ngx_buf_t *buf; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
108 ngx_str_node_t *sn; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
109 ngx_conf_dump_t *cd; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
110 |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
111 hash = ngx_crc32_long(filename->data, filename->len); |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
112 |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
113 sn = ngx_str_rbtree_lookup(&cf->cycle->config_dump_rbtree, filename, hash); |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
114 |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
115 if (sn) { |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
116 cf->conf_file->dump = NULL; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
117 return NGX_OK; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
118 } |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
119 |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
120 p = ngx_pstrdup(cf->cycle->pool, filename); |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
121 if (p == NULL) { |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
122 return NGX_ERROR; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
123 } |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
124 |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
125 cd = ngx_array_push(&cf->cycle->config_dump); |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
126 if (cd == NULL) { |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
127 return NGX_ERROR; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
128 } |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
129 |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
130 size = ngx_file_size(&cf->conf_file->file.info); |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
131 |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
132 buf = ngx_create_temp_buf(cf->cycle->pool, (size_t) size); |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
133 if (buf == NULL) { |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
134 return NGX_ERROR; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
135 } |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
136 |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
137 cd->name.data = p; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
138 cd->name.len = filename->len; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
139 cd->buffer = buf; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
140 |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
141 cf->conf_file->dump = buf; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
142 |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
143 sn = ngx_palloc(cf->temp_pool, sizeof(ngx_str_node_t)); |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
144 if (sn == NULL) { |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
145 return NGX_ERROR; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
146 } |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
147 |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
148 sn->node.key = hash; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
149 sn->str = cd->name; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
150 |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
151 ngx_rbtree_insert(&cf->cycle->config_dump_rbtree, &sn->node); |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
152 |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
153 return NGX_OK; |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
154 } |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
155 |
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
156 |
2073 | 157 char * |
503 | 158 ngx_conf_parse(ngx_conf_t *cf, ngx_str_t *filename) |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
159 { |
44
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
160 char *rv; |
343
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
161 ngx_fd_t fd; |
501 | 162 ngx_int_t rc; |
6776
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
163 ngx_buf_t buf; |
2339
2142237f66da
allocate cf->conf_file and cf->conf_file->buffer on stack
Igor Sysoev <igor@sysoev.ru>
parents:
2338
diff
changeset
|
164 ngx_conf_file_t *prev, conf_file; |
2073 | 165 enum { |
166 parse_file = 0, | |
167 parse_block, | |
168 parse_param | |
169 } type; | |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
170 |
114
ac69ab96328d
nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents:
100
diff
changeset
|
171 #if (NGX_SUPPRESS_WARN) |
ac69ab96328d
nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents:
100
diff
changeset
|
172 fd = NGX_INVALID_FILE; |
ac69ab96328d
nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents:
100
diff
changeset
|
173 prev = NULL; |
ac69ab96328d
nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents:
100
diff
changeset
|
174 #endif |
ac69ab96328d
nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents:
100
diff
changeset
|
175 |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
176 if (filename) { |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
177 |
90
37530da31268
nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
89
diff
changeset
|
178 /* open configuration file */ |
37530da31268
nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
89
diff
changeset
|
179 |
1048
c4f666fc3a7e
ngx_open_file(name, access, create) > ngx_open_file(name, mode, create, access)
Igor Sysoev <igor@sysoev.ru>
parents:
988
diff
changeset
|
180 fd = ngx_open_file(filename->data, NGX_FILE_RDONLY, NGX_FILE_OPEN, 0); |
7086 | 181 |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
182 if (fd == NGX_INVALID_FILE) { |
581 | 183 ngx_conf_log_error(NGX_LOG_EMERG, cf, ngx_errno, |
593 | 184 ngx_open_file_n " \"%s\" failed", |
185 filename->data); | |
44
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
186 return NGX_CONF_ERROR; |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
187 } |
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
188 |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
189 prev = cf->conf_file; |
501 | 190 |
2339
2142237f66da
allocate cf->conf_file and cf->conf_file->buffer on stack
Igor Sysoev <igor@sysoev.ru>
parents:
2338
diff
changeset
|
191 cf->conf_file = &conf_file; |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
192 |
5137
f941cf265cc5
Use NGX_FILE_ERROR for handling file operations errors.
Valentin Bartenev <vbart@nginx.com>
parents:
5001
diff
changeset
|
193 if (ngx_fd_info(fd, &cf->conf_file->file.info) == NGX_FILE_ERROR) { |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
194 ngx_log_error(NGX_LOG_EMERG, cf->log, ngx_errno, |
461 | 195 ngx_fd_info_n " \"%s\" failed", filename->data); |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
196 } |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
197 |
2339
2142237f66da
allocate cf->conf_file and cf->conf_file->buffer on stack
Igor Sysoev <igor@sysoev.ru>
parents:
2338
diff
changeset
|
198 cf->conf_file->buffer = &buf; |
2142237f66da
allocate cf->conf_file and cf->conf_file->buffer on stack
Igor Sysoev <igor@sysoev.ru>
parents:
2338
diff
changeset
|
199 |
2142237f66da
allocate cf->conf_file and cf->conf_file->buffer on stack
Igor Sysoev <igor@sysoev.ru>
parents:
2338
diff
changeset
|
200 buf.start = ngx_alloc(NGX_CONF_BUFFER, cf->log); |
2142237f66da
allocate cf->conf_file and cf->conf_file->buffer on stack
Igor Sysoev <igor@sysoev.ru>
parents:
2338
diff
changeset
|
201 if (buf.start == NULL) { |
2142237f66da
allocate cf->conf_file and cf->conf_file->buffer on stack
Igor Sysoev <igor@sysoev.ru>
parents:
2338
diff
changeset
|
202 goto failed; |
343
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
203 } |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
204 |
2339
2142237f66da
allocate cf->conf_file and cf->conf_file->buffer on stack
Igor Sysoev <igor@sysoev.ru>
parents:
2338
diff
changeset
|
205 buf.pos = buf.start; |
2142237f66da
allocate cf->conf_file and cf->conf_file->buffer on stack
Igor Sysoev <igor@sysoev.ru>
parents:
2338
diff
changeset
|
206 buf.last = buf.start; |
2142237f66da
allocate cf->conf_file and cf->conf_file->buffer on stack
Igor Sysoev <igor@sysoev.ru>
parents:
2338
diff
changeset
|
207 buf.end = buf.last + NGX_CONF_BUFFER; |
2142237f66da
allocate cf->conf_file and cf->conf_file->buffer on stack
Igor Sysoev <igor@sysoev.ru>
parents:
2338
diff
changeset
|
208 buf.temporary = 1; |
629 | 209 |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
210 cf->conf_file->file.fd = fd; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
211 cf->conf_file->file.name.len = filename->len; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
212 cf->conf_file->file.name.data = filename->data; |
114
ac69ab96328d
nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents:
100
diff
changeset
|
213 cf->conf_file->file.offset = 0; |
1563
022ec9420f80
style fix: remove double semicolons
Igor Sysoev <igor@sysoev.ru>
parents:
1438
diff
changeset
|
214 cf->conf_file->file.log = cf->log; |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
215 cf->conf_file->line = 1; |
543 | 216 |
2073 | 217 type = parse_file; |
218 | |
6187
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
219 if (ngx_dump_config |
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
220 #if (NGX_DEBUG) |
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
221 || 1 |
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
222 #endif |
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
223 ) |
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
224 { |
6776
1bf4f21b1b72
Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6699
diff
changeset
|
225 if (ngx_conf_add_dump(cf, filename) != NGX_OK) { |
6187
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
226 goto failed; |
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
227 } |
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
228 |
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
229 } else { |
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
230 cf->conf_file->dump = NULL; |
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
231 } |
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
232 |
2073 | 233 } else if (cf->conf_file->file.fd != NGX_INVALID_FILE) { |
234 | |
235 type = parse_block; | |
543 | 236 |
237 } else { | |
2073 | 238 type = parse_param; |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
239 } |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
240 |
543 | 241 |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
242 for ( ;; ) { |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
243 rc = ngx_conf_read_token(cf); |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
244 |
343
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
245 /* |
461 | 246 * ngx_conf_read_token() may return |
543 | 247 * |
461 | 248 * NGX_ERROR there is error |
249 * NGX_OK the token terminated by ";" was found | |
250 * NGX_CONF_BLOCK_START the token terminated by "{" was found | |
251 * NGX_CONF_BLOCK_DONE the "}" was found | |
252 * NGX_CONF_FILE_DONE the configuration file is done | |
343
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
253 */ |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
254 |
44
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
255 if (rc == NGX_ERROR) { |
1123
88dc269bbca2
use "goto" instead of indistinct "break"
Igor Sysoev <igor@sysoev.ru>
parents:
1122
diff
changeset
|
256 goto done; |
44
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
257 } |
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
258 |
543 | 259 if (rc == NGX_CONF_BLOCK_DONE) { |
2064 | 260 |
2073 | 261 if (type != parse_block) { |
1122
3728476ab96d
stop on superfluous closing "}"
Igor Sysoev <igor@sysoev.ru>
parents:
1107
diff
changeset
|
262 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "unexpected \"}\""); |
1123
88dc269bbca2
use "goto" instead of indistinct "break"
Igor Sysoev <igor@sysoev.ru>
parents:
1122
diff
changeset
|
263 goto failed; |
1122
3728476ab96d
stop on superfluous closing "}"
Igor Sysoev <igor@sysoev.ru>
parents:
1107
diff
changeset
|
264 } |
3728476ab96d
stop on superfluous closing "}"
Igor Sysoev <igor@sysoev.ru>
parents:
1107
diff
changeset
|
265 |
2064 | 266 goto done; |
543 | 267 } |
268 | |
2064 | 269 if (rc == NGX_CONF_FILE_DONE) { |
270 | |
2073 | 271 if (type == parse_block) { |
2064 | 272 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
273 "unexpected end of file, expecting \"}\""); | |
274 goto failed; | |
275 } | |
276 | |
277 goto done; | |
543 | 278 } |
279 | |
2073 | 280 if (rc == NGX_CONF_BLOCK_START) { |
281 | |
282 if (type == parse_param) { | |
283 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, | |
284 "block directives are not supported " | |
285 "in -g option"); | |
286 goto failed; | |
287 } | |
288 } | |
289 | |
2064 | 290 /* rc == NGX_OK || rc == NGX_CONF_BLOCK_START */ |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
291 |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
292 if (cf->handler) { |
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
293 |
461 | 294 /* |
295 * the custom handler, i.e., that is used in the http's | |
296 * "types { ... }" directive | |
297 */ | |
90
37530da31268
nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
89
diff
changeset
|
298 |
5227
ea41bba49e8a
Core: strengthen configuration syntax checker.
Valentin Bartenev <vbart@nginx.com>
parents:
5137
diff
changeset
|
299 if (rc == NGX_CONF_BLOCK_START) { |
ea41bba49e8a
Core: strengthen configuration syntax checker.
Valentin Bartenev <vbart@nginx.com>
parents:
5137
diff
changeset
|
300 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "unexpected \"{\""); |
ea41bba49e8a
Core: strengthen configuration syntax checker.
Valentin Bartenev <vbart@nginx.com>
parents:
5137
diff
changeset
|
301 goto failed; |
ea41bba49e8a
Core: strengthen configuration syntax checker.
Valentin Bartenev <vbart@nginx.com>
parents:
5137
diff
changeset
|
302 } |
ea41bba49e8a
Core: strengthen configuration syntax checker.
Valentin Bartenev <vbart@nginx.com>
parents:
5137
diff
changeset
|
303 |
88
674d333f4296
nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
84
diff
changeset
|
304 rv = (*cf->handler)(cf, NULL, cf->handler_conf); |
674d333f4296
nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
84
diff
changeset
|
305 if (rv == NGX_CONF_OK) { |
674d333f4296
nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
84
diff
changeset
|
306 continue; |
501 | 307 } |
88
674d333f4296
nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
84
diff
changeset
|
308 |
501 | 309 if (rv == NGX_CONF_ERROR) { |
1123
88dc269bbca2
use "goto" instead of indistinct "break"
Igor Sysoev <igor@sysoev.ru>
parents:
1122
diff
changeset
|
310 goto failed; |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
311 } |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
312 |
7451
d864ee67b5ae
Use %s for errors returned from configuration parsing handlers.
Ruslan Ermilov <ru@nginx.com>
parents:
7334
diff
changeset
|
313 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "%s", rv); |
1123
88dc269bbca2
use "goto" instead of indistinct "break"
Igor Sysoev <igor@sysoev.ru>
parents:
1122
diff
changeset
|
314 |
88dc269bbca2
use "goto" instead of indistinct "break"
Igor Sysoev <igor@sysoev.ru>
parents:
1122
diff
changeset
|
315 goto failed; |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
316 } |
118
5bf52498665c
nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
117
diff
changeset
|
317 |
501 | 318 |
319 rc = ngx_conf_handler(cf, rc); | |
320 | |
118
5bf52498665c
nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
117
diff
changeset
|
321 if (rc == NGX_ERROR) { |
1123
88dc269bbca2
use "goto" instead of indistinct "break"
Igor Sysoev <igor@sysoev.ru>
parents:
1122
diff
changeset
|
322 goto failed; |
118
5bf52498665c
nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
117
diff
changeset
|
323 } |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
324 } |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
325 |
1123
88dc269bbca2
use "goto" instead of indistinct "break"
Igor Sysoev <igor@sysoev.ru>
parents:
1122
diff
changeset
|
326 failed: |
88dc269bbca2
use "goto" instead of indistinct "break"
Igor Sysoev <igor@sysoev.ru>
parents:
1122
diff
changeset
|
327 |
88dc269bbca2
use "goto" instead of indistinct "break"
Igor Sysoev <igor@sysoev.ru>
parents:
1122
diff
changeset
|
328 rc = NGX_ERROR; |
88dc269bbca2
use "goto" instead of indistinct "break"
Igor Sysoev <igor@sysoev.ru>
parents:
1122
diff
changeset
|
329 |
88dc269bbca2
use "goto" instead of indistinct "break"
Igor Sysoev <igor@sysoev.ru>
parents:
1122
diff
changeset
|
330 done: |
501 | 331 |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
332 if (filename) { |
2339
2142237f66da
allocate cf->conf_file and cf->conf_file->buffer on stack
Igor Sysoev <igor@sysoev.ru>
parents:
2338
diff
changeset
|
333 if (cf->conf_file->buffer->start) { |
2142237f66da
allocate cf->conf_file and cf->conf_file->buffer on stack
Igor Sysoev <igor@sysoev.ru>
parents:
2338
diff
changeset
|
334 ngx_free(cf->conf_file->buffer->start); |
2142237f66da
allocate cf->conf_file and cf->conf_file->buffer on stack
Igor Sysoev <igor@sysoev.ru>
parents:
2338
diff
changeset
|
335 } |
583 | 336 |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
337 if (ngx_close_file(fd) == NGX_FILE_ERROR) { |
90
37530da31268
nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
89
diff
changeset
|
338 ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno, |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
339 ngx_close_file_n " %s failed", |
3296
f63865460aa6
cf->conf_file->file.name.data may be uninitialized, if an allocation failed;
Igor Sysoev <igor@sysoev.ru>
parents:
2906
diff
changeset
|
340 filename->data); |
5681
56ad171c3dd1
Core: improved ngx_conf_parse() error handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
5331
diff
changeset
|
341 rc = NGX_ERROR; |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
342 } |
2338 | 343 |
344 cf->conf_file = prev; | |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
345 } |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
346 |
114
ac69ab96328d
nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents:
100
diff
changeset
|
347 if (rc == NGX_ERROR) { |
ac69ab96328d
nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents:
100
diff
changeset
|
348 return NGX_CONF_ERROR; |
ac69ab96328d
nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents:
100
diff
changeset
|
349 } |
ac69ab96328d
nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents:
100
diff
changeset
|
350 |
44
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
351 return NGX_CONF_OK; |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
352 } |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
353 |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
354 |
503 | 355 static ngx_int_t |
356 ngx_conf_handler(ngx_conf_t *cf, ngx_int_t last) | |
501 | 357 { |
358 char *rv; | |
359 void *conf, **confp; | |
4768
1c5e2e4d5b35
Improved diagnostics when a directive is specified in the wrong context.
Ruslan Ermilov <ru@nginx.com>
parents:
4759
diff
changeset
|
360 ngx_uint_t i, found; |
501 | 361 ngx_str_t *name; |
362 ngx_command_t *cmd; | |
363 | |
364 name = cf->args->elts; | |
365 | |
4768
1c5e2e4d5b35
Improved diagnostics when a directive is specified in the wrong context.
Ruslan Ermilov <ru@nginx.com>
parents:
4759
diff
changeset
|
366 found = 0; |
645 | 367 |
6379
cf5e822cf470
Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6187
diff
changeset
|
368 for (i = 0; cf->cycle->modules[i]; i++) { |
501 | 369 |
6379
cf5e822cf470
Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6187
diff
changeset
|
370 cmd = cf->cycle->modules[i]->commands; |
501 | 371 if (cmd == NULL) { |
372 continue; | |
373 } | |
374 | |
645 | 375 for ( /* void */ ; cmd->name.len; cmd++) { |
501 | 376 |
645 | 377 if (name->len != cmd->name.len) { |
378 continue; | |
379 } | |
501 | 380 |
645 | 381 if (ngx_strcmp(name->data, cmd->name.data) != 0) { |
382 continue; | |
383 } | |
384 | |
4768
1c5e2e4d5b35
Improved diagnostics when a directive is specified in the wrong context.
Ruslan Ermilov <ru@nginx.com>
parents:
4759
diff
changeset
|
385 found = 1; |
1c5e2e4d5b35
Improved diagnostics when a directive is specified in the wrong context.
Ruslan Ermilov <ru@nginx.com>
parents:
4759
diff
changeset
|
386 |
6379
cf5e822cf470
Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6187
diff
changeset
|
387 if (cf->cycle->modules[i]->type != NGX_CONF_MODULE |
cf5e822cf470
Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6187
diff
changeset
|
388 && cf->cycle->modules[i]->type != cf->module_type) |
4768
1c5e2e4d5b35
Improved diagnostics when a directive is specified in the wrong context.
Ruslan Ermilov <ru@nginx.com>
parents:
4759
diff
changeset
|
389 { |
1c5e2e4d5b35
Improved diagnostics when a directive is specified in the wrong context.
Ruslan Ermilov <ru@nginx.com>
parents:
4759
diff
changeset
|
390 continue; |
1c5e2e4d5b35
Improved diagnostics when a directive is specified in the wrong context.
Ruslan Ermilov <ru@nginx.com>
parents:
4759
diff
changeset
|
391 } |
645 | 392 |
393 /* is the directive's location right ? */ | |
394 | |
395 if (!(cmd->type & cf->cmd_type)) { | |
4768
1c5e2e4d5b35
Improved diagnostics when a directive is specified in the wrong context.
Ruslan Ermilov <ru@nginx.com>
parents:
4759
diff
changeset
|
396 continue; |
645 | 397 } |
398 | |
399 if (!(cmd->type & NGX_CONF_BLOCK) && last != NGX_OK) { | |
1124
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
400 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
401 "directive \"%s\" is not terminated by \";\"", |
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
402 name->data); |
645 | 403 return NGX_ERROR; |
404 } | |
501 | 405 |
645 | 406 if ((cmd->type & NGX_CONF_BLOCK) && last != NGX_CONF_BLOCK_START) { |
1124
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
407 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
408 "directive \"%s\" has no opening \"{\"", |
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
409 name->data); |
645 | 410 return NGX_ERROR; |
411 } | |
501 | 412 |
645 | 413 /* is the directive's argument count right ? */ |
501 | 414 |
645 | 415 if (!(cmd->type & NGX_CONF_ANY)) { |
501 | 416 |
645 | 417 if (cmd->type & NGX_CONF_FLAG) { |
501 | 418 |
645 | 419 if (cf->args->nelts != 2) { |
420 goto invalid; | |
501 | 421 } |
422 | |
423 } else if (cmd->type & NGX_CONF_1MORE) { | |
424 | |
645 | 425 if (cf->args->nelts < 2) { |
426 goto invalid; | |
501 | 427 } |
428 | |
429 } else if (cmd->type & NGX_CONF_2MORE) { | |
430 | |
645 | 431 if (cf->args->nelts < 3) { |
432 goto invalid; | |
501 | 433 } |
434 | |
645 | 435 } else if (cf->args->nelts > NGX_CONF_MAX_ARGS) { |
501 | 436 |
645 | 437 goto invalid; |
501 | 438 |
645 | 439 } else if (!(cmd->type & argument_number[cf->args->nelts - 1])) |
440 { | |
441 goto invalid; | |
501 | 442 } |
645 | 443 } |
501 | 444 |
645 | 445 /* set up the directive's configuration context */ |
501 | 446 |
645 | 447 conf = NULL; |
501 | 448 |
645 | 449 if (cmd->type & NGX_DIRECT_CONF) { |
6379
cf5e822cf470
Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6187
diff
changeset
|
450 conf = ((void **) cf->ctx)[cf->cycle->modules[i]->index]; |
501 | 451 |
645 | 452 } else if (cmd->type & NGX_MAIN_CONF) { |
6379
cf5e822cf470
Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6187
diff
changeset
|
453 conf = &(((void **) cf->ctx)[cf->cycle->modules[i]->index]); |
501 | 454 |
645 | 455 } else if (cf->ctx) { |
456 confp = *(void **) ((char *) cf->ctx + cmd->conf); | |
501 | 457 |
645 | 458 if (confp) { |
6379
cf5e822cf470
Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6187
diff
changeset
|
459 conf = confp[cf->cycle->modules[i]->ctx_index]; |
501 | 460 } |
645 | 461 } |
501 | 462 |
645 | 463 rv = cmd->set(cf, cmd, conf); |
501 | 464 |
645 | 465 if (rv == NGX_CONF_OK) { |
466 return NGX_OK; | |
467 } | |
468 | |
469 if (rv == NGX_CONF_ERROR) { | |
501 | 470 return NGX_ERROR; |
471 } | |
472 | |
1124
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
473 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
1237 | 474 "\"%s\" directive %s", name->data, rv); |
645 | 475 |
476 return NGX_ERROR; | |
501 | 477 } |
478 } | |
479 | |
4768
1c5e2e4d5b35
Improved diagnostics when a directive is specified in the wrong context.
Ruslan Ermilov <ru@nginx.com>
parents:
4759
diff
changeset
|
480 if (found) { |
1124
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
481 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
4768
1c5e2e4d5b35
Improved diagnostics when a directive is specified in the wrong context.
Ruslan Ermilov <ru@nginx.com>
parents:
4759
diff
changeset
|
482 "\"%s\" directive is not allowed here", name->data); |
645 | 483 |
484 return NGX_ERROR; | |
485 } | |
486 | |
4768
1c5e2e4d5b35
Improved diagnostics when a directive is specified in the wrong context.
Ruslan Ermilov <ru@nginx.com>
parents:
4759
diff
changeset
|
487 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
1c5e2e4d5b35
Improved diagnostics when a directive is specified in the wrong context.
Ruslan Ermilov <ru@nginx.com>
parents:
4759
diff
changeset
|
488 "unknown directive \"%s\"", name->data); |
645 | 489 |
490 return NGX_ERROR; | |
491 | |
492 invalid: | |
493 | |
1124
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
494 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
1438 | 495 "invalid number of arguments in \"%s\" directive", |
1124
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
496 name->data); |
501 | 497 |
498 return NGX_ERROR; | |
499 } | |
500 | |
501 | |
503 | 502 static ngx_int_t |
503 ngx_conf_read_token(ngx_conf_t *cf) | |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
504 { |
290
87e73f067470
nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
265
diff
changeset
|
505 u_char *start, ch, *src, *dst; |
2222
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
506 off_t file_size; |
2214 | 507 size_t len; |
2222
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
508 ssize_t n, size; |
2214 | 509 ngx_uint_t found, need_space, last_space, sharp_comment, variable; |
2216 | 510 ngx_uint_t quoted, s_quoted, d_quoted, start_line; |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
511 ngx_str_t *word; |
6187
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
512 ngx_buf_t *b, *dump; |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
513 |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
514 found = 0; |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
515 need_space = 0; |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
516 last_space = 1; |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
517 sharp_comment = 0; |
509 | 518 variable = 0; |
2847 | 519 quoted = 0; |
520 s_quoted = 0; | |
521 d_quoted = 0; | |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
522 |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
523 cf->args->nelts = 0; |
343
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
524 b = cf->conf_file->buffer; |
6187
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
525 dump = cf->conf_file->dump; |
343
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
526 start = b->pos; |
2216 | 527 start_line = cf->conf_file->line; |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
528 |
2222
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
529 file_size = ngx_file_size(&cf->conf_file->file.info); |
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
530 |
37
9fe40e51d4a3
nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
36
diff
changeset
|
531 for ( ;; ) { |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
532 |
343
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
533 if (b->pos >= b->last) { |
2073 | 534 |
2222
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
535 if (cf->conf_file->file.offset >= file_size) { |
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
536 |
4598
01a21ee8f8bb
Don't silently ignore the last line of configuration file that
Ruslan Ermilov <ru@nginx.com>
parents:
4593
diff
changeset
|
537 if (cf->args->nelts > 0 || !last_space) { |
2073 | 538 |
539 if (cf->conf_file->file.fd == NGX_INVALID_FILE) { | |
540 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, | |
541 "unexpected end of parameter, " | |
542 "expecting \";\""); | |
543 return NGX_ERROR; | |
544 } | |
545 | |
1124
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
546 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
547 "unexpected end of file, " |
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
548 "expecting \";\" or \"}\""); |
487 | 549 return NGX_ERROR; |
550 } | |
551 | |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
552 return NGX_CONF_FILE_DONE; |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
553 } |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
554 |
2216 | 555 len = b->pos - start; |
556 | |
2222
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
557 if (len == NGX_CONF_BUFFER) { |
2216 | 558 cf->conf_file->line = start_line; |
559 | |
2217
31fda45f696f
quoted too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents:
2216
diff
changeset
|
560 if (d_quoted) { |
31fda45f696f
quoted too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents:
2216
diff
changeset
|
561 ch = '"'; |
31fda45f696f
quoted too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents:
2216
diff
changeset
|
562 |
31fda45f696f
quoted too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents:
2216
diff
changeset
|
563 } else if (s_quoted) { |
31fda45f696f
quoted too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents:
2216
diff
changeset
|
564 ch = '\''; |
31fda45f696f
quoted too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents:
2216
diff
changeset
|
565 |
31fda45f696f
quoted too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents:
2216
diff
changeset
|
566 } else { |
31fda45f696f
quoted too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents:
2216
diff
changeset
|
567 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
31fda45f696f
quoted too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents:
2216
diff
changeset
|
568 "too long parameter \"%*s...\" started", |
31fda45f696f
quoted too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents:
2216
diff
changeset
|
569 10, start); |
31fda45f696f
quoted too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents:
2216
diff
changeset
|
570 return NGX_ERROR; |
31fda45f696f
quoted too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents:
2216
diff
changeset
|
571 } |
31fda45f696f
quoted too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents:
2216
diff
changeset
|
572 |
2216 | 573 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
2217
31fda45f696f
quoted too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents:
2216
diff
changeset
|
574 "too long parameter, probably " |
31fda45f696f
quoted too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents:
2216
diff
changeset
|
575 "missing terminating \"%c\" character", ch); |
2216 | 576 return NGX_ERROR; |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
577 } |
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
578 |
2216 | 579 if (len) { |
3887
e7798b5e990a
use memmove() in appropriate places
Igor Sysoev <igor@sysoev.ru>
parents:
3642
diff
changeset
|
580 ngx_memmove(b->start, start, len); |
2216 | 581 } |
582 | |
2226
7f3e1c63606b
fix building by msvc introduced in r2223
Igor Sysoev <igor@sysoev.ru>
parents:
2222
diff
changeset
|
583 size = (ssize_t) (file_size - cf->conf_file->file.offset); |
2222
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
584 |
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
585 if (size > b->end - (b->start + len)) { |
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
586 size = b->end - (b->start + len); |
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
587 } |
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
588 |
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
589 n = ngx_read_file(&cf->conf_file->file, b->start + len, size, |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
590 cf->conf_file->file.offset); |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
591 |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
592 if (n == NGX_ERROR) { |
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
593 return NGX_ERROR; |
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
594 } |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
595 |
2222
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
596 if (n != size) { |
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
597 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
598 ngx_read_file_n " returned " |
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
599 "only %z bytes instead of %z", |
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
600 n, size); |
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
601 return NGX_ERROR; |
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
602 } |
d200fbe9aa81
test conf file size, this fixes OpenBSD's "nginx -c /tmp/" bug
Igor Sysoev <igor@sysoev.ru>
parents:
2217
diff
changeset
|
603 |
2216 | 604 b->pos = b->start + len; |
605 b->last = b->pos + n; | |
343
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
606 start = b->start; |
6187
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
607 |
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
608 if (dump) { |
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
609 dump->last = ngx_cpymem(dump->last, b->pos, size); |
1b7e246e6b38
Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents:
6163
diff
changeset
|
610 } |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
611 } |
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
612 |
343
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
613 ch = *b->pos++; |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
614 |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
615 if (ch == LF) { |
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
616 cf->conf_file->line++; |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
617 |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
618 if (sharp_comment) { |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
619 sharp_comment = 0; |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
620 } |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
621 } |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
622 |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
623 if (sharp_comment) { |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
624 continue; |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
625 } |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
626 |
37
9fe40e51d4a3
nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
36
diff
changeset
|
627 if (quoted) { |
9fe40e51d4a3
nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
36
diff
changeset
|
628 quoted = 0; |
9fe40e51d4a3
nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
36
diff
changeset
|
629 continue; |
9fe40e51d4a3
nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
36
diff
changeset
|
630 } |
9fe40e51d4a3
nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
36
diff
changeset
|
631 |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
632 if (need_space) { |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
633 if (ch == ' ' || ch == '\t' || ch == CR || ch == LF) { |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
634 last_space = 1; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
635 need_space = 0; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
636 continue; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
637 } |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
638 |
461 | 639 if (ch == ';') { |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
640 return NGX_OK; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
641 } |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
642 |
461 | 643 if (ch == '{') { |
644 return NGX_CONF_BLOCK_START; | |
645 } | |
646 | |
581 | 647 if (ch == ')') { |
648 last_space = 1; | |
649 need_space = 0; | |
177
4db54fdbcbe7
nginx-0.0.1-2003-11-10-20:17:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
176
diff
changeset
|
650 |
581 | 651 } else { |
6474 | 652 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
653 "unexpected \"%c\"", ch); | |
654 return NGX_ERROR; | |
581 | 655 } |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
656 } |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
657 |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
658 if (last_space) { |
7334
f17e313009b0
Skipping spaces in configuration files (ticket #1557).
Maxim Dounin <mdounin@mdounin.ru>
parents:
7177
diff
changeset
|
659 |
f17e313009b0
Skipping spaces in configuration files (ticket #1557).
Maxim Dounin <mdounin@mdounin.ru>
parents:
7177
diff
changeset
|
660 start = b->pos - 1; |
f17e313009b0
Skipping spaces in configuration files (ticket #1557).
Maxim Dounin <mdounin@mdounin.ru>
parents:
7177
diff
changeset
|
661 start_line = cf->conf_file->line; |
f17e313009b0
Skipping spaces in configuration files (ticket #1557).
Maxim Dounin <mdounin@mdounin.ru>
parents:
7177
diff
changeset
|
662 |
32
d45effe5854c
nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
19
diff
changeset
|
663 if (ch == ' ' || ch == '\t' || ch == CR || ch == LF) { |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
664 continue; |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
665 } |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
666 |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
667 switch (ch) { |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
668 |
37
9fe40e51d4a3
nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
36
diff
changeset
|
669 case ';': |
9fe40e51d4a3
nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
36
diff
changeset
|
670 case '{': |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
671 if (cf->args->nelts == 0) { |
1124
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
672 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
673 "unexpected \"%c\"", ch); |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
674 return NGX_ERROR; |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
675 } |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
676 |
461 | 677 if (ch == '{') { |
678 return NGX_CONF_BLOCK_START; | |
679 } | |
680 | |
37
9fe40e51d4a3
nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
36
diff
changeset
|
681 return NGX_OK; |
9fe40e51d4a3
nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
36
diff
changeset
|
682 |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
683 case '}': |
517 | 684 if (cf->args->nelts != 0) { |
1124
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
685 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
f1a8c6cd10ba
ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
1123
diff
changeset
|
686 "unexpected \"}\""); |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
687 return NGX_ERROR; |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
688 } |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
689 |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
690 return NGX_CONF_BLOCK_DONE; |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
691 |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
692 case '#': |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
693 sharp_comment = 1; |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
694 continue; |
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
695 |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
696 case '\\': |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
697 quoted = 1; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
698 last_space = 0; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
699 continue; |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
700 |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
701 case '"': |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
702 start++; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
703 d_quoted = 1; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
704 last_space = 0; |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
705 continue; |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
706 |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
707 case '\'': |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
708 start++; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
709 s_quoted = 1; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
710 last_space = 0; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
711 continue; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
712 |
7177
d91a8c4ac6bb
Allowed configuration token to start with a variable.
Roman Arutyunyan <arut@nginx.com>
parents:
7086
diff
changeset
|
713 case '$': |
d91a8c4ac6bb
Allowed configuration token to start with a variable.
Roman Arutyunyan <arut@nginx.com>
parents:
7086
diff
changeset
|
714 variable = 1; |
d91a8c4ac6bb
Allowed configuration token to start with a variable.
Roman Arutyunyan <arut@nginx.com>
parents:
7086
diff
changeset
|
715 last_space = 0; |
d91a8c4ac6bb
Allowed configuration token to start with a variable.
Roman Arutyunyan <arut@nginx.com>
parents:
7086
diff
changeset
|
716 continue; |
d91a8c4ac6bb
Allowed configuration token to start with a variable.
Roman Arutyunyan <arut@nginx.com>
parents:
7086
diff
changeset
|
717 |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
718 default: |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
719 last_space = 0; |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
720 } |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
721 |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
722 } else { |
509 | 723 if (ch == '{' && variable) { |
724 continue; | |
725 } | |
726 | |
727 variable = 0; | |
728 | |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
729 if (ch == '\\') { |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
730 quoted = 1; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
731 continue; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
732 } |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
733 |
509 | 734 if (ch == '$') { |
735 variable = 1; | |
736 continue; | |
737 } | |
738 | |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
739 if (d_quoted) { |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
740 if (ch == '"') { |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
741 d_quoted = 0; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
742 need_space = 1; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
743 found = 1; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
744 } |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
745 |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
746 } else if (s_quoted) { |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
747 if (ch == '\'') { |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
748 s_quoted = 0; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
749 need_space = 1; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
750 found = 1; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
751 } |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
752 |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
753 } else if (ch == ' ' || ch == '\t' || ch == CR || ch == LF |
3642 | 754 || ch == ';' || ch == '{') |
755 { | |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
756 last_space = 1; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
757 found = 1; |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
758 } |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
759 |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
760 if (found) { |
501 | 761 word = ngx_array_push(cf->args); |
762 if (word == NULL) { | |
343
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
763 return NGX_ERROR; |
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
764 } |
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
765 |
6163
4e71788460fa
Fixed excessive memory usage while parsing configuration.
Valentin Bartenev <vbart@nginx.com>
parents:
5784
diff
changeset
|
766 word->data = ngx_pnalloc(cf->pool, b->pos - 1 - start + 1); |
501 | 767 if (word->data == NULL) { |
343
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
768 return NGX_ERROR; |
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
769 } |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
770 |
37
9fe40e51d4a3
nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
36
diff
changeset
|
771 for (dst = word->data, src = start, len = 0; |
343
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
772 src < b->pos - 1; |
37
9fe40e51d4a3
nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
36
diff
changeset
|
773 len++) |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
774 { |
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
775 if (*src == '\\') { |
195
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
776 switch (src[1]) { |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
777 case '"': |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
778 case '\'': |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
779 case '\\': |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
780 src++; |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
781 break; |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
782 |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
783 case 't': |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
784 *dst++ = '\t'; |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
785 src += 2; |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
786 continue; |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
787 |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
788 case 'r': |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
789 *dst++ = '\r'; |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
790 src += 2; |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
791 continue; |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
792 |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
793 case 'n': |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
794 *dst++ = '\n'; |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
795 src += 2; |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
796 continue; |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
797 } |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
798 |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
799 } |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
800 *dst++ = *src++; |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
801 } |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
802 *dst = '\0'; |
37
9fe40e51d4a3
nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
36
diff
changeset
|
803 word->len = len; |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
804 |
461 | 805 if (ch == ';') { |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
806 return NGX_OK; |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
807 } |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
808 |
461 | 809 if (ch == '{') { |
810 return NGX_CONF_BLOCK_START; | |
811 } | |
812 | |
36
c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
35
diff
changeset
|
813 found = 0; |
19
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
814 } |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
815 } |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
816 } |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
817 } |
d7908993fdeb
nginx-0.0.1-2002-12-02-19:09:40 import; resume after 2 months stall
Igor Sysoev <igor@sysoev.ru>
parents:
13
diff
changeset
|
818 |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
819 |
4827
6e46016ea276
Fixed the "include" directive.
Ruslan Ermilov <ru@nginx.com>
parents:
4768
diff
changeset
|
820 char * |
503 | 821 ngx_conf_include(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) |
336
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
822 { |
727 | 823 char *rv; |
824 ngx_int_t n; | |
1911
ade85ba31674
included file name must be allocated in pool,
Igor Sysoev <igor@sysoev.ru>
parents:
1701
diff
changeset
|
825 ngx_str_t *value, file, name; |
727 | 826 ngx_glob_t gl; |
336
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
827 |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
828 value = cf->args->elts; |
440
f390d1775430
nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
435
diff
changeset
|
829 file = value[1]; |
336
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
830 |
727 | 831 ngx_log_debug1(NGX_LOG_DEBUG_CORE, cf->log, 0, "include %s", file.data); |
832 | |
5330
314c3d7cc3a5
Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents:
5318
diff
changeset
|
833 if (ngx_conf_full_name(cf->cycle, &file, 1) != NGX_OK) { |
336
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
834 return NGX_CONF_ERROR; |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
835 } |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
836 |
1980 | 837 if (strpbrk((char *) file.data, "*?[") == NULL) { |
838 | |
839 ngx_log_debug1(NGX_LOG_DEBUG_CORE, cf->log, 0, "include %s", file.data); | |
840 | |
841 return ngx_conf_parse(cf, &file); | |
842 } | |
843 | |
727 | 844 ngx_memzero(&gl, sizeof(ngx_glob_t)); |
845 | |
846 gl.pattern = file.data; | |
847 gl.log = cf->log; | |
1980 | 848 gl.test = 1; |
727 | 849 |
850 if (ngx_open_glob(&gl) != NGX_OK) { | |
851 ngx_conf_log_error(NGX_LOG_EMERG, cf, ngx_errno, | |
852 ngx_open_glob_n " \"%s\" failed", file.data); | |
853 return NGX_CONF_ERROR; | |
854 } | |
855 | |
856 rv = NGX_CONF_OK; | |
857 | |
858 for ( ;; ) { | |
1911
ade85ba31674
included file name must be allocated in pool,
Igor Sysoev <igor@sysoev.ru>
parents:
1701
diff
changeset
|
859 n = ngx_read_glob(&gl, &name); |
336
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
860 |
727 | 861 if (n != NGX_OK) { |
862 break; | |
863 } | |
864 | |
1911
ade85ba31674
included file name must be allocated in pool,
Igor Sysoev <igor@sysoev.ru>
parents:
1701
diff
changeset
|
865 file.len = name.len++; |
ade85ba31674
included file name must be allocated in pool,
Igor Sysoev <igor@sysoev.ru>
parents:
1701
diff
changeset
|
866 file.data = ngx_pstrdup(cf->pool, &name); |
5784
f87afb46ccd2
Core: improved ngx_pstrdup() error handling.
Tatsuhiko Kubo <cubicdaiya@gmail.com>
parents:
5681
diff
changeset
|
867 if (file.data == NULL) { |
f87afb46ccd2
Core: improved ngx_pstrdup() error handling.
Tatsuhiko Kubo <cubicdaiya@gmail.com>
parents:
5681
diff
changeset
|
868 return NGX_CONF_ERROR; |
f87afb46ccd2
Core: improved ngx_pstrdup() error handling.
Tatsuhiko Kubo <cubicdaiya@gmail.com>
parents:
5681
diff
changeset
|
869 } |
1911
ade85ba31674
included file name must be allocated in pool,
Igor Sysoev <igor@sysoev.ru>
parents:
1701
diff
changeset
|
870 |
727 | 871 ngx_log_debug1(NGX_LOG_DEBUG_CORE, cf->log, 0, "include %s", file.data); |
872 | |
873 rv = ngx_conf_parse(cf, &file); | |
874 | |
875 if (rv != NGX_CONF_OK) { | |
876 break; | |
877 } | |
878 } | |
879 | |
880 ngx_close_glob(&gl); | |
881 | |
882 return rv; | |
336
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
883 } |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
884 |
ca9a7f8c86da
nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
314
diff
changeset
|
885 |
5330
314c3d7cc3a5
Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents:
5318
diff
changeset
|
886 ngx_int_t |
314c3d7cc3a5
Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents:
5318
diff
changeset
|
887 ngx_conf_full_name(ngx_cycle_t *cycle, ngx_str_t *name, ngx_uint_t conf_prefix) |
314c3d7cc3a5
Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents:
5318
diff
changeset
|
888 { |
5331
e04083b79335
Style improved after 12dd27b74117.
Maxim Dounin <mdounin@mdounin.ru>
parents:
5330
diff
changeset
|
889 ngx_str_t *prefix; |
e04083b79335
Style improved after 12dd27b74117.
Maxim Dounin <mdounin@mdounin.ru>
parents:
5330
diff
changeset
|
890 |
e04083b79335
Style improved after 12dd27b74117.
Maxim Dounin <mdounin@mdounin.ru>
parents:
5330
diff
changeset
|
891 prefix = conf_prefix ? &cycle->conf_prefix : &cycle->prefix; |
e04083b79335
Style improved after 12dd27b74117.
Maxim Dounin <mdounin@mdounin.ru>
parents:
5330
diff
changeset
|
892 |
e04083b79335
Style improved after 12dd27b74117.
Maxim Dounin <mdounin@mdounin.ru>
parents:
5330
diff
changeset
|
893 return ngx_get_full_name(cycle->pool, prefix, name); |
5330
314c3d7cc3a5
Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents:
5318
diff
changeset
|
894 } |
314c3d7cc3a5
Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents:
5318
diff
changeset
|
895 |
314c3d7cc3a5
Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents:
5318
diff
changeset
|
896 |
503 | 897 ngx_open_file_t * |
898 ngx_conf_open_file(ngx_cycle_t *cycle, ngx_str_t *name) | |
119
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
899 { |
440
f390d1775430
nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
435
diff
changeset
|
900 ngx_str_t full; |
290
87e73f067470
nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
265
diff
changeset
|
901 ngx_uint_t i; |
414
388a842cbbe1
nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
412
diff
changeset
|
902 ngx_list_part_t *part; |
119
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
903 ngx_open_file_t *file; |
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
904 |
449
3b1e8c9df9ad
nginx-0.1.0-2004-10-04-00:02:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
447
diff
changeset
|
905 #if (NGX_SUPPRESS_WARN) |
3516
dd1570b6f237
ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents:
3449
diff
changeset
|
906 ngx_str_null(&full); |
449
3b1e8c9df9ad
nginx-0.1.0-2004-10-04-00:02:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
447
diff
changeset
|
907 #endif |
3b1e8c9df9ad
nginx-0.1.0-2004-10-04-00:02:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
447
diff
changeset
|
908 |
2785
d478379e51ac
*) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents:
2772
diff
changeset
|
909 if (name->len) { |
440
f390d1775430
nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
435
diff
changeset
|
910 full = *name; |
f390d1775430
nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
435
diff
changeset
|
911 |
5330
314c3d7cc3a5
Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents:
5318
diff
changeset
|
912 if (ngx_conf_full_name(cycle, &full, 0) != NGX_OK) { |
440
f390d1775430
nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
435
diff
changeset
|
913 return NULL; |
f390d1775430
nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
435
diff
changeset
|
914 } |
f390d1775430
nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
435
diff
changeset
|
915 |
414
388a842cbbe1
nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
412
diff
changeset
|
916 part = &cycle->open_files.part; |
388a842cbbe1
nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
412
diff
changeset
|
917 file = part->elts; |
388a842cbbe1
nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
412
diff
changeset
|
918 |
388a842cbbe1
nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
412
diff
changeset
|
919 for (i = 0; /* void */ ; i++) { |
388a842cbbe1
nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
412
diff
changeset
|
920 |
388a842cbbe1
nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
412
diff
changeset
|
921 if (i >= part->nelts) { |
388a842cbbe1
nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
412
diff
changeset
|
922 if (part->next == NULL) { |
388a842cbbe1
nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
412
diff
changeset
|
923 break; |
388a842cbbe1
nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
412
diff
changeset
|
924 } |
388a842cbbe1
nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
412
diff
changeset
|
925 part = part->next; |
388a842cbbe1
nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
412
diff
changeset
|
926 file = part->elts; |
388a842cbbe1
nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
412
diff
changeset
|
927 i = 0; |
388a842cbbe1
nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
412
diff
changeset
|
928 } |
388a842cbbe1
nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
412
diff
changeset
|
929 |
440
f390d1775430
nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
435
diff
changeset
|
930 if (full.len != file[i].name.len) { |
119
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
931 continue; |
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
932 } |
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
933 |
440
f390d1775430
nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
435
diff
changeset
|
934 if (ngx_strcmp(full.data, file[i].name.data) == 0) { |
119
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
935 return &file[i]; |
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
936 } |
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
937 } |
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
938 } |
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
939 |
501 | 940 file = ngx_list_push(&cycle->open_files); |
941 if (file == NULL) { | |
343
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
942 return NULL; |
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
943 } |
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
944 |
2785
d478379e51ac
*) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents:
2772
diff
changeset
|
945 if (name->len) { |
447
288f249897e7
nginx-0.1.0-2004-09-30-23:44:38 import
Igor Sysoev <igor@sysoev.ru>
parents:
444
diff
changeset
|
946 file->fd = NGX_INVALID_FILE; |
440
f390d1775430
nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
435
diff
changeset
|
947 file->name = full; |
f390d1775430
nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
435
diff
changeset
|
948 |
415
3c56e834be46
nginx-0.0.10-2004-09-05-23:54:02 import
Igor Sysoev <igor@sysoev.ru>
parents:
414
diff
changeset
|
949 } else { |
2743
d8316f307b6a
issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents:
2536
diff
changeset
|
950 file->fd = ngx_stderr; |
2785
d478379e51ac
*) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents:
2772
diff
changeset
|
951 file->name = *name; |
119
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
952 } |
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
953 |
4985
a0599b56e748
Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents:
4966
diff
changeset
|
954 file->flush = NULL; |
5001
c37b9a17514d
The data pointer in ngx_open_file_t objects must be initialized.
Valentin Bartenev <vbart@nginx.com>
parents:
4985
diff
changeset
|
955 file->data = NULL; |
571 | 956 |
119
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
957 return file; |
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
958 } |
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
959 |
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
960 |
571 | 961 static void |
962 ngx_conf_flush_files(ngx_cycle_t *cycle) | |
963 { | |
964 ngx_uint_t i; | |
965 ngx_list_part_t *part; | |
966 ngx_open_file_t *file; | |
967 | |
968 ngx_log_debug0(NGX_LOG_DEBUG_CORE, cycle->log, 0, "flush files"); | |
969 | |
970 part = &cycle->open_files.part; | |
971 file = part->elts; | |
972 | |
973 for (i = 0; /* void */ ; i++) { | |
974 | |
975 if (i >= part->nelts) { | |
976 if (part->next == NULL) { | |
977 break; | |
978 } | |
979 part = part->next; | |
980 file = part->elts; | |
981 i = 0; | |
982 } | |
983 | |
4985
a0599b56e748
Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents:
4966
diff
changeset
|
984 if (file[i].flush) { |
a0599b56e748
Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents:
4966
diff
changeset
|
985 file[i].flush(&file[i], cycle->log); |
2302
2abf14c952a2
compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents:
2226
diff
changeset
|
986 } |
571 | 987 } |
988 } | |
989 | |
990 | |
503 | 991 void ngx_cdecl |
992 ngx_conf_log_error(ngx_uint_t level, ngx_conf_t *cf, ngx_err_t err, | |
3449
151ab752a782
const char *fmt in ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents:
3296
diff
changeset
|
993 const char *fmt, ...) |
118
5bf52498665c
nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
117
diff
changeset
|
994 { |
2336
81d506883bba
*) increase ngx_conf_log_error() buffer
Igor Sysoev <igor@sysoev.ru>
parents:
2302
diff
changeset
|
995 u_char errstr[NGX_MAX_CONF_ERRSTR], *p, *last; |
118
5bf52498665c
nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
117
diff
changeset
|
996 va_list args; |
5bf52498665c
nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
117
diff
changeset
|
997 |
461 | 998 last = errstr + NGX_MAX_CONF_ERRSTR; |
999 | |
118
5bf52498665c
nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
117
diff
changeset
|
1000 va_start(args, fmt); |
2764
d4a717592877
use ngx_vslprintf(), ngx_slprintf()
Igor Sysoev <igor@sysoev.ru>
parents:
2758
diff
changeset
|
1001 p = ngx_vslprintf(errstr, last, fmt, args); |
118
5bf52498665c
nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
117
diff
changeset
|
1002 va_end(args); |
5bf52498665c
nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
117
diff
changeset
|
1003 |
2336
81d506883bba
*) increase ngx_conf_log_error() buffer
Igor Sysoev <igor@sysoev.ru>
parents:
2302
diff
changeset
|
1004 if (err) { |
2765 | 1005 p = ngx_log_errno(p, last, err); |
118
5bf52498665c
nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
117
diff
changeset
|
1006 } |
5bf52498665c
nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
117
diff
changeset
|
1007 |
593 | 1008 if (cf->conf_file == NULL) { |
2336
81d506883bba
*) increase ngx_conf_log_error() buffer
Igor Sysoev <igor@sysoev.ru>
parents:
2302
diff
changeset
|
1009 ngx_log_error(level, cf->log, 0, "%*s", p - errstr, errstr); |
593 | 1010 return; |
1011 } | |
1012 | |
2772
9b107cdf53f6
*) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents:
2765
diff
changeset
|
1013 if (cf->conf_file->file.fd == NGX_INVALID_FILE) { |
9b107cdf53f6
*) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents:
2765
diff
changeset
|
1014 ngx_log_error(level, cf->log, 0, "%*s in command line", |
9b107cdf53f6
*) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents:
2765
diff
changeset
|
1015 p - errstr, errstr); |
9b107cdf53f6
*) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents:
2765
diff
changeset
|
1016 return; |
9b107cdf53f6
*) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents:
2765
diff
changeset
|
1017 } |
9b107cdf53f6
*) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents:
2765
diff
changeset
|
1018 |
2336
81d506883bba
*) increase ngx_conf_log_error() buffer
Igor Sysoev <igor@sysoev.ru>
parents:
2302
diff
changeset
|
1019 ngx_log_error(level, cf->log, 0, "%*s in %s:%ui", |
81d506883bba
*) increase ngx_conf_log_error() buffer
Igor Sysoev <igor@sysoev.ru>
parents:
2302
diff
changeset
|
1020 p - errstr, errstr, |
81d506883bba
*) increase ngx_conf_log_error() buffer
Igor Sysoev <igor@sysoev.ru>
parents:
2302
diff
changeset
|
1021 cf->conf_file->file.name.data, cf->conf_file->line); |
118
5bf52498665c
nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
117
diff
changeset
|
1022 } |
5bf52498665c
nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
117
diff
changeset
|
1023 |
5bf52498665c
nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents:
117
diff
changeset
|
1024 |
503 | 1025 char * |
1026 ngx_conf_set_flag_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) | |
64
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1027 { |
98
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
1028 char *p = conf; |
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
1029 |
435
5cdc4838d4e8
nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
416
diff
changeset
|
1030 ngx_str_t *value; |
5cdc4838d4e8
nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
416
diff
changeset
|
1031 ngx_flag_t *fp; |
5cdc4838d4e8
nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
416
diff
changeset
|
1032 ngx_conf_post_t *post; |
64
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1033 |
435
5cdc4838d4e8
nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
416
diff
changeset
|
1034 fp = (ngx_flag_t *) (p + cmd->offset); |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1035 |
435
5cdc4838d4e8
nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
416
diff
changeset
|
1036 if (*fp != NGX_CONF_UNSET) { |
92
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1037 return "is duplicate"; |
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1038 } |
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1039 |
314
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1040 value = cf->args->elts; |
64
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1041 |
1107
db7c468c447d
ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents:
1048
diff
changeset
|
1042 if (ngx_strcasecmp(value[1].data, (u_char *) "on") == 0) { |
435
5cdc4838d4e8
nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
416
diff
changeset
|
1043 *fp = 1; |
64
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1044 |
1107
db7c468c447d
ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents:
1048
diff
changeset
|
1045 } else if (ngx_strcasecmp(value[1].data, (u_char *) "off") == 0) { |
435
5cdc4838d4e8
nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
416
diff
changeset
|
1046 *fp = 0; |
64
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1047 |
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1048 } else { |
119
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
1049 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
1050 "invalid value \"%s\" in \"%s\" directive, " |
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
1051 "it must be \"on\" or \"off\"", |
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
1052 value[1].data, cmd->name.data); |
cd54bcbaf3b5
nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
118
diff
changeset
|
1053 return NGX_CONF_ERROR; |
64
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1054 } |
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1055 |
435
5cdc4838d4e8
nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
416
diff
changeset
|
1056 if (cmd->post) { |
5cdc4838d4e8
nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
416
diff
changeset
|
1057 post = cmd->post; |
5cdc4838d4e8
nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
416
diff
changeset
|
1058 return post->post_handler(cf, post, fp); |
5cdc4838d4e8
nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
416
diff
changeset
|
1059 } |
64
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1060 |
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1061 return NGX_CONF_OK; |
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1062 } |
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1063 |
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1064 |
503 | 1065 char * |
1066 ngx_conf_set_str_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) | |
44
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
1067 { |
98
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
1068 char *p = conf; |
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
1069 |
412
199cd29f35a3
nginx-0.0.10-2004-08-31-19:32:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
343
diff
changeset
|
1070 ngx_str_t *field, *value; |
199cd29f35a3
nginx-0.0.10-2004-08-31-19:32:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
343
diff
changeset
|
1071 ngx_conf_post_t *post; |
44
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
1072 |
98
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
1073 field = (ngx_str_t *) (p + cmd->offset); |
92
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1074 |
96
a23d010f356d
nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
92
diff
changeset
|
1075 if (field->data) { |
92
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1076 return "is duplicate"; |
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1077 } |
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1078 |
314
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1079 value = cf->args->elts; |
44
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
1080 |
155
46eb23d9471d
nginx-0.0.1-2003-10-22-20:38:26 import
Igor Sysoev <igor@sysoev.ru>
parents:
141
diff
changeset
|
1081 *field = value[1]; |
44
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
1082 |
412
199cd29f35a3
nginx-0.0.10-2004-08-31-19:32:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
343
diff
changeset
|
1083 if (cmd->post) { |
199cd29f35a3
nginx-0.0.10-2004-08-31-19:32:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
343
diff
changeset
|
1084 post = cmd->post; |
199cd29f35a3
nginx-0.0.10-2004-08-31-19:32:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
343
diff
changeset
|
1085 return post->post_handler(cf, post, field); |
199cd29f35a3
nginx-0.0.10-2004-08-31-19:32:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
343
diff
changeset
|
1086 } |
199cd29f35a3
nginx-0.0.10-2004-08-31-19:32:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
343
diff
changeset
|
1087 |
44
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
1088 return NGX_CONF_OK; |
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
1089 } |
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
1090 |
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
1091 |
503 | 1092 char * |
649 | 1093 ngx_conf_set_str_array_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) |
509 | 1094 { |
1095 char *p = conf; | |
1096 | |
649 | 1097 ngx_str_t *value, *s; |
509 | 1098 ngx_array_t **a; |
1099 ngx_conf_post_t *post; | |
1100 | |
1101 a = (ngx_array_t **) (p + cmd->offset); | |
1102 | |
1701
40d004d95d88
*) now ngx_conf_set_str_array_slot() tests NGX_CONF_UNSET_PTR
Igor Sysoev <igor@sysoev.ru>
parents:
1563
diff
changeset
|
1103 if (*a == NGX_CONF_UNSET_PTR) { |
649 | 1104 *a = ngx_array_create(cf->pool, 4, sizeof(ngx_str_t)); |
509 | 1105 if (*a == NULL) { |
1106 return NGX_CONF_ERROR; | |
1107 } | |
1108 } | |
1109 | |
649 | 1110 s = ngx_array_push(*a); |
1111 if (s == NULL) { | |
509 | 1112 return NGX_CONF_ERROR; |
1113 } | |
1114 | |
1115 value = cf->args->elts; | |
1116 | |
649 | 1117 *s = value[1]; |
509 | 1118 |
1119 if (cmd->post) { | |
1120 post = cmd->post; | |
649 | 1121 return post->post_handler(cf, post, s); |
1122 } | |
1123 | |
1124 return NGX_CONF_OK; | |
1125 } | |
1126 | |
1127 | |
1128 char * | |
1129 ngx_conf_set_keyval_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) | |
1130 { | |
1131 char *p = conf; | |
1132 | |
1133 ngx_str_t *value; | |
1134 ngx_array_t **a; | |
1135 ngx_keyval_t *kv; | |
1136 ngx_conf_post_t *post; | |
1137 | |
1138 a = (ngx_array_t **) (p + cmd->offset); | |
1139 | |
1140 if (*a == NULL) { | |
1141 *a = ngx_array_create(cf->pool, 4, sizeof(ngx_keyval_t)); | |
1142 if (*a == NULL) { | |
1143 return NGX_CONF_ERROR; | |
1144 } | |
1145 } | |
1146 | |
1147 kv = ngx_array_push(*a); | |
1148 if (kv == NULL) { | |
1149 return NGX_CONF_ERROR; | |
1150 } | |
1151 | |
1152 value = cf->args->elts; | |
1153 | |
1154 kv->key = value[1]; | |
1155 kv->value = value[2]; | |
1156 | |
1157 if (cmd->post) { | |
1158 post = cmd->post; | |
1159 return post->post_handler(cf, post, kv); | |
509 | 1160 } |
1161 | |
1162 return NGX_CONF_OK; | |
1163 } | |
1164 | |
1165 | |
1166 char * | |
503 | 1167 ngx_conf_set_num_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) |
90
37530da31268
nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
89
diff
changeset
|
1168 { |
98
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
1169 char *p = conf; |
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
1170 |
265
6468241715e6
nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
1171 ngx_int_t *np; |
158
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1172 ngx_str_t *value; |
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1173 ngx_conf_post_t *post; |
90
37530da31268
nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
89
diff
changeset
|
1174 |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1175 |
265
6468241715e6
nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
1176 np = (ngx_int_t *) (p + cmd->offset); |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1177 |
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1178 if (*np != NGX_CONF_UNSET) { |
92
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1179 return "is duplicate"; |
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1180 } |
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1181 |
314
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1182 value = cf->args->elts; |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1183 *np = ngx_atoi(value[1].data, value[1].len); |
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1184 if (*np == NGX_ERROR) { |
98
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
1185 return "invalid number"; |
90
37530da31268
nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
89
diff
changeset
|
1186 } |
37530da31268
nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
89
diff
changeset
|
1187 |
158
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1188 if (cmd->post) { |
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1189 post = cmd->post; |
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1190 return post->post_handler(cf, post, np); |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1191 } |
90
37530da31268
nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
89
diff
changeset
|
1192 |
37530da31268
nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
89
diff
changeset
|
1193 return NGX_CONF_OK; |
37530da31268
nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
89
diff
changeset
|
1194 } |
37530da31268
nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
89
diff
changeset
|
1195 |
37530da31268
nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
89
diff
changeset
|
1196 |
503 | 1197 char * |
1198 ngx_conf_set_size_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) | |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
1199 { |
98
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
1200 char *p = conf; |
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
1201 |
290
87e73f067470
nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
265
diff
changeset
|
1202 size_t *sp; |
158
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1203 ngx_str_t *value; |
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1204 ngx_conf_post_t *post; |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
1205 |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1206 |
290
87e73f067470
nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
265
diff
changeset
|
1207 sp = (size_t *) (p + cmd->offset); |
87e73f067470
nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
265
diff
changeset
|
1208 if (*sp != NGX_CONF_UNSET_SIZE) { |
92
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1209 return "is duplicate"; |
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1210 } |
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1211 |
314
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1212 value = cf->args->elts; |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
1213 |
265
6468241715e6
nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
1214 *sp = ngx_parse_size(&value[1]); |
290
87e73f067470
nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
265
diff
changeset
|
1215 if (*sp == (size_t) NGX_ERROR) { |
84
fab4cb00fe5b
nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
83
diff
changeset
|
1216 return "invalid value"; |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
1217 } |
10
4f3879d9b6f6
nginx-0.0.1-2002-09-11-19:18:33 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
1218 |
158
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1219 if (cmd->post) { |
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1220 post = cmd->post; |
265
6468241715e6
nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
1221 return post->post_handler(cf, post, sp); |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1222 } |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
1223 |
44
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
1224 return NGX_CONF_OK; |
10
4f3879d9b6f6
nginx-0.0.1-2002-09-11-19:18:33 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
1225 } |
13
2aba961a1d34
nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
10
diff
changeset
|
1226 |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
1227 |
503 | 1228 char * |
663 | 1229 ngx_conf_set_off_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) |
1230 { | |
1231 char *p = conf; | |
1232 | |
1233 off_t *op; | |
1234 ngx_str_t *value; | |
1235 ngx_conf_post_t *post; | |
1236 | |
1237 | |
1238 op = (off_t *) (p + cmd->offset); | |
1239 if (*op != NGX_CONF_UNSET) { | |
1240 return "is duplicate"; | |
1241 } | |
1242 | |
1243 value = cf->args->elts; | |
1244 | |
1245 *op = ngx_parse_offset(&value[1]); | |
1246 if (*op == (off_t) NGX_ERROR) { | |
1247 return "invalid value"; | |
1248 } | |
1249 | |
1250 if (cmd->post) { | |
1251 post = cmd->post; | |
1252 return post->post_handler(cf, post, op); | |
1253 } | |
1254 | |
1255 return NGX_CONF_OK; | |
1256 } | |
1257 | |
1258 | |
1259 char * | |
503 | 1260 ngx_conf_set_msec_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) |
13
2aba961a1d34
nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
10
diff
changeset
|
1261 { |
98
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
1262 char *p = conf; |
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
1263 |
265
6468241715e6
nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
1264 ngx_msec_t *msp; |
158
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1265 ngx_str_t *value; |
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1266 ngx_conf_post_t *post; |
13
2aba961a1d34
nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
10
diff
changeset
|
1267 |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1268 |
265
6468241715e6
nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
1269 msp = (ngx_msec_t *) (p + cmd->offset); |
290
87e73f067470
nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
265
diff
changeset
|
1270 if (*msp != NGX_CONF_UNSET_MSEC) { |
92
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1271 return "is duplicate"; |
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1272 } |
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1273 |
314
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1274 value = cf->args->elts; |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
1275 |
265
6468241715e6
nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
1276 *msp = ngx_parse_time(&value[1], 0); |
6468241715e6
nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
1277 if (*msp == (ngx_msec_t) NGX_ERROR) { |
157
70b36c805682
nginx-0.0.1-2003-10-23-19:54:19 import
Igor Sysoev <igor@sysoev.ru>
parents:
156
diff
changeset
|
1278 return "invalid value"; |
83
a7e45c45a95c
nginx-0.0.1-2003-04-28-19:06:39 import
Igor Sysoev <igor@sysoev.ru>
parents:
71
diff
changeset
|
1279 } |
a7e45c45a95c
nginx-0.0.1-2003-04-28-19:06:39 import
Igor Sysoev <igor@sysoev.ru>
parents:
71
diff
changeset
|
1280 |
158
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1281 if (cmd->post) { |
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1282 post = cmd->post; |
265
6468241715e6
nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
1283 return post->post_handler(cf, post, msp); |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1284 } |
40
d5d4f3bba6f0
nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents:
37
diff
changeset
|
1285 |
44
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
1286 return NGX_CONF_OK; |
13
2aba961a1d34
nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
10
diff
changeset
|
1287 } |
64
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1288 |
84
fab4cb00fe5b
nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
83
diff
changeset
|
1289 |
503 | 1290 char * |
1291 ngx_conf_set_sec_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) | |
84
fab4cb00fe5b
nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
83
diff
changeset
|
1292 { |
98
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
1293 char *p = conf; |
c9b243802a17
nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
96
diff
changeset
|
1294 |
265
6468241715e6
nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
1295 time_t *sp; |
158
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1296 ngx_str_t *value; |
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1297 ngx_conf_post_t *post; |
84
fab4cb00fe5b
nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
83
diff
changeset
|
1298 |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1299 |
265
6468241715e6
nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
1300 sp = (time_t *) (p + cmd->offset); |
6468241715e6
nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
1301 if (*sp != NGX_CONF_UNSET) { |
92
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1302 return "is duplicate"; |
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1303 } |
19cc647ecd91
nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
1304 |
314
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1305 value = cf->args->elts; |
84
fab4cb00fe5b
nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
83
diff
changeset
|
1306 |
265
6468241715e6
nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
1307 *sp = ngx_parse_time(&value[1], 1); |
4474 | 1308 if (*sp == (time_t) NGX_ERROR) { |
157
70b36c805682
nginx-0.0.1-2003-10-23-19:54:19 import
Igor Sysoev <igor@sysoev.ru>
parents:
156
diff
changeset
|
1309 return "invalid value"; |
84
fab4cb00fe5b
nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
83
diff
changeset
|
1310 } |
fab4cb00fe5b
nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
83
diff
changeset
|
1311 |
158
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1312 if (cmd->post) { |
d377ee423603
nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
157
diff
changeset
|
1313 post = cmd->post; |
265
6468241715e6
nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
257
diff
changeset
|
1314 return post->post_handler(cf, post, sp); |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1315 } |
84
fab4cb00fe5b
nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
83
diff
changeset
|
1316 |
fab4cb00fe5b
nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
83
diff
changeset
|
1317 return NGX_CONF_OK; |
fab4cb00fe5b
nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
83
diff
changeset
|
1318 } |
fab4cb00fe5b
nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
83
diff
changeset
|
1319 |
fab4cb00fe5b
nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
83
diff
changeset
|
1320 |
503 | 1321 char * |
1322 ngx_conf_set_bufs_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) | |
141
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1323 { |
166
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1324 char *p = conf; |
141
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1325 |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1326 ngx_str_t *value; |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1327 ngx_bufs_t *bufs; |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1328 |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1329 |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1330 bufs = (ngx_bufs_t *) (p + cmd->offset); |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1331 if (bufs->num) { |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1332 return "is duplicate"; |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1333 } |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1334 |
314
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1335 value = cf->args->elts; |
141
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1336 |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1337 bufs->num = ngx_atoi(value[1].data, value[1].len); |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1338 if (bufs->num == NGX_ERROR || bufs->num == 0) { |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1339 return "invalid value"; |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1340 } |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1341 |
157
70b36c805682
nginx-0.0.1-2003-10-23-19:54:19 import
Igor Sysoev <igor@sysoev.ru>
parents:
156
diff
changeset
|
1342 bufs->size = ngx_parse_size(&value[2]); |
167
8aef3c72e5da
nginx-0.0.1-2003-10-30-19:51:33 import
Igor Sysoev <igor@sysoev.ru>
parents:
166
diff
changeset
|
1343 if (bufs->size == (size_t) NGX_ERROR || bufs->size == 0) { |
141
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1344 return "invalid value"; |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1345 } |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1346 |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1347 return NGX_CONF_OK; |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1348 } |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1349 |
656d468f4ead
nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
119
diff
changeset
|
1350 |
503 | 1351 char * |
1352 ngx_conf_set_enum_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) | |
314
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1353 { |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1354 char *p = conf; |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1355 |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1356 ngx_uint_t *np, i; |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1357 ngx_str_t *value; |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1358 ngx_conf_enum_t *e; |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1359 |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1360 np = (ngx_uint_t *) (p + cmd->offset); |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1361 |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1362 if (*np != NGX_CONF_UNSET_UINT) { |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1363 return "is duplicate"; |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1364 } |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1365 |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1366 value = cf->args->elts; |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1367 e = cmd->post; |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1368 |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1369 for (i = 0; e[i].name.len != 0; i++) { |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1370 if (e[i].name.len != value[1].len |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1371 || ngx_strcasecmp(e[i].name.data, value[1].data) != 0) |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1372 { |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1373 continue; |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1374 } |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1375 |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1376 *np = e[i].value; |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1377 |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1378 return NGX_CONF_OK; |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1379 } |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1380 |
6699
9cf2dce316e5
Fixed log levels of configuration parsing errors.
Valentin Bartenev <vbart@nginx.com>
parents:
6474
diff
changeset
|
1381 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
314
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1382 "invalid value \"%s\"", value[1].data); |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1383 |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1384 return NGX_CONF_ERROR; |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1385 } |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1386 |
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1387 |
503 | 1388 char * |
1389 ngx_conf_set_bitmask_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) | |
166
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1390 { |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1391 char *p = conf; |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1392 |
290
87e73f067470
nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
265
diff
changeset
|
1393 ngx_uint_t *np, i, m; |
166
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1394 ngx_str_t *value; |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1395 ngx_conf_bitmask_t *mask; |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1396 |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1397 |
290
87e73f067470
nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
265
diff
changeset
|
1398 np = (ngx_uint_t *) (p + cmd->offset); |
314
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1399 value = cf->args->elts; |
166
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1400 mask = cmd->post; |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1401 |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1402 for (i = 1; i < cf->args->nelts; i++) { |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1403 for (m = 0; mask[m].name.len != 0; m++) { |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1404 |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1405 if (mask[m].name.len != value[i].len |
314
d71c87d11b16
nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents:
311
diff
changeset
|
1406 || ngx_strcasecmp(mask[m].name.data, value[i].data) != 0) |
166
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1407 { |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1408 continue; |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1409 } |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1410 |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1411 if (*np & mask[m].mask) { |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1412 ngx_conf_log_error(NGX_LOG_WARN, cf, 0, |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1413 "duplicate value \"%s\"", value[i].data); |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1414 |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1415 } else { |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1416 *np |= mask[m].mask; |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1417 } |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1418 |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1419 break; |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1420 } |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1421 |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1422 if (mask[m].name.len == 0) { |
6699
9cf2dce316e5
Fixed log levels of configuration parsing errors.
Valentin Bartenev <vbart@nginx.com>
parents:
6474
diff
changeset
|
1423 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
166
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1424 "invalid value \"%s\"", value[i].data); |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1425 |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1426 return NGX_CONF_ERROR; |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1427 } |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1428 } |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1429 |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1430 return NGX_CONF_OK; |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1431 } |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1432 |
389d7ee9fa60
nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents:
158
diff
changeset
|
1433 |
4759
4c36e15651f7
Fixed compilation with -Wmissing-prototypes.
Ruslan Ermilov <ru@nginx.com>
parents:
4598
diff
changeset
|
1434 #if 0 |
4c36e15651f7
Fixed compilation with -Wmissing-prototypes.
Ruslan Ermilov <ru@nginx.com>
parents:
4598
diff
changeset
|
1435 |
503 | 1436 char * |
1437 ngx_conf_unsupported(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) | |
64
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1438 { |
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1439 return "unsupported on this platform"; |
34d647deb1da
nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
59
diff
changeset
|
1440 } |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1441 |
4759
4c36e15651f7
Fixed compilation with -Wmissing-prototypes.
Ruslan Ermilov <ru@nginx.com>
parents:
4598
diff
changeset
|
1442 #endif |
4c36e15651f7
Fixed compilation with -Wmissing-prototypes.
Ruslan Ermilov <ru@nginx.com>
parents:
4598
diff
changeset
|
1443 |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1444 |
503 | 1445 char * |
581 | 1446 ngx_conf_deprecated(ngx_conf_t *cf, void *post, void *data) |
1447 { | |
1448 ngx_conf_deprecated_t *d = post; | |
1449 | |
1450 ngx_conf_log_error(NGX_LOG_WARN, cf, 0, | |
1451 "the \"%s\" directive is deprecated, " | |
1452 "use the \"%s\" directive instead", | |
1453 d->old_name, d->new_name); | |
1454 | |
1455 return NGX_CONF_OK; | |
1456 } | |
1457 | |
1458 | |
1459 char * | |
503 | 1460 ngx_conf_check_num_bounds(ngx_conf_t *cf, void *post, void *data) |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1461 { |
343
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
1462 ngx_conf_num_bounds_t *bounds = post; |
6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
Igor Sysoev <igor@sysoev.ru>
parents:
337
diff
changeset
|
1463 ngx_int_t *np = data; |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1464 |
172
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
167
diff
changeset
|
1465 if (bounds->high == -1) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
167
diff
changeset
|
1466 if (*np >= bounds->low) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
167
diff
changeset
|
1467 return NGX_CONF_OK; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
167
diff
changeset
|
1468 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
167
diff
changeset
|
1469 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
167
diff
changeset
|
1470 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
4593
834049edae24
Fixed grammar in error messages.
Ruslan Ermilov <ru@nginx.com>
parents:
4474
diff
changeset
|
1471 "value must be equal to or greater than %i", |
834049edae24
Fixed grammar in error messages.
Ruslan Ermilov <ru@nginx.com>
parents:
4474
diff
changeset
|
1472 bounds->low); |
172
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
167
diff
changeset
|
1473 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
167
diff
changeset
|
1474 return NGX_CONF_ERROR; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
167
diff
changeset
|
1475 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
167
diff
changeset
|
1476 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
167
diff
changeset
|
1477 if (*np >= bounds->low && *np <= bounds->high) { |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1478 return NGX_CONF_OK; |
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1479 } |
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1480 |
172
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
167
diff
changeset
|
1481 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, |
507 | 1482 "value must be between %i and %i", |
172
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
167
diff
changeset
|
1483 bounds->low, bounds->high); |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
167
diff
changeset
|
1484 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
167
diff
changeset
|
1485 return NGX_CONF_ERROR; |
156
afc333135a6b
nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents:
155
diff
changeset
|
1486 } |