annotate src/core/ngx_conf_file.c @ 7174:84e53e4735a4

Retain CAP_NET_RAW capability for transparent proxying. The capability is retained automatically in unprivileged worker processes after changing UID if transparent proxying is enabled at least once in nginx configuration. The feature is only available in Linux.
author Roman Arutyunyan <arut@nginx.com>
date Wed, 13 Dec 2017 20:40:53 +0300
parents 577628e6b6a6
children d91a8c4ac6bb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 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
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 3887
diff changeset
4 * Copyright (C) Nginx, Inc.
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 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
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
14 static ngx_int_t ngx_conf_handler(ngx_conf_t *cf, ngx_int_t last);
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
15 static ngx_int_t ngx_conf_read_token(ngx_conf_t *cf);
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
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
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
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
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
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
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
39 NULL, /* init process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
40 NULL, /* init thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
41 NULL, /* exit thread */
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
42 ngx_conf_flush_files, /* exit process */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
43 NULL, /* exit master */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
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
853fc7a46792 fix types
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
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
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
62 char *
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
63 ngx_conf_param(ngx_conf_t *cf)
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
64 {
2772
9b107cdf53f6 *) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents: 2765
diff changeset
65 char *rv;
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
66 ngx_str_t *param;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
67 ngx_buf_t b;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
68 ngx_conf_file_t conf_file;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
69
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
70 param = &cf->cycle->conf_param;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
71
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
72 if (param->len == 0) {
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
73 return NGX_CONF_OK;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
74 }
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
75
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
76 ngx_memzero(&conf_file, sizeof(ngx_conf_file_t));
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
77
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
78 ngx_memzero(&b, sizeof(ngx_buf_t));
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
79
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
80 b.start = param->data;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
81 b.pos = param->data;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
82 b.last = param->data + param->len;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
83 b.end = b.last;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
84 b.temporary = 1;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
85
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
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
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
89
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
90 cf->conf_file = &conf_file;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
91 cf->conf_file->buffer = &b;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
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
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
98 }
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
99
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
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
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
157 char *
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
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
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
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
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
165 enum {
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
166 parse_file = 0,
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
167 parse_block,
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
168 parse_param
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
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
Sergey Kandaurov <pluknet@nginx.com>
parents: 6776
diff changeset
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
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
183 ngx_conf_log_error(NGX_LOG_EMERG, cf, ngx_errno,
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
184 ngx_open_file_n " \"%s\" failed",
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
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
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
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
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
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
65bf042c0b4f nginx-0.3.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
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
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
216
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
217 type = parse_file;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
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
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
233 } else if (cf->conf_file->file.fd != NGX_INVALID_FILE) {
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
234
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
235 type = parse_block;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
236
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
237 } else {
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
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
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
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
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
246 * ngx_conf_read_token() may return
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
247 *
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
248 * NGX_ERROR there is error
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
249 * NGX_OK the token terminated by ";" was found
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
250 * NGX_CONF_BLOCK_START the token terminated by "{" was found
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
251 * NGX_CONF_BLOCK_DONE the "}" was found
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
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
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
259 if (rc == NGX_CONF_BLOCK_DONE) {
2064
0835142149d2 refactor obscure code
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
260
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
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
0835142149d2 refactor obscure code
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
266 goto done;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
267 }
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
268
2064
0835142149d2 refactor obscure code
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
269 if (rc == NGX_CONF_FILE_DONE) {
0835142149d2 refactor obscure code
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
270
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
271 if (type == parse_block) {
2064
0835142149d2 refactor obscure code
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
272 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
0835142149d2 refactor obscure code
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
273 "unexpected end of file, expecting \"}\"");
0835142149d2 refactor obscure code
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
274 goto failed;
0835142149d2 refactor obscure code
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
275 }
0835142149d2 refactor obscure code
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
276
0835142149d2 refactor obscure code
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
277 goto done;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
278 }
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
279
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
280 if (rc == NGX_CONF_BLOCK_START) {
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
281
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
282 if (type == parse_param) {
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
283 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
284 "block directives are not supported "
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
285 "in -g option");
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
286 goto failed;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
287 }
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
288 }
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
289
2064
0835142149d2 refactor obscure code
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
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
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
294 /*
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
295 * the custom handler, i.e., that is used in the http's
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
296 * "types { ... }" directive
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
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
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
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
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
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
1124
f1a8c6cd10ba ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents: 1123
diff changeset
313 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, 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
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
318
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
319 rc = ngx_conf_handler(cf, rc);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
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
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
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
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
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
5cbf2da3a324 fix segfault on close error
Igor Sysoev <igor@sysoev.ru>
parents: 2336
diff changeset
343
5cbf2da3a324 fix segfault on close error
Igor Sysoev <igor@sysoev.ru>
parents: 2336
diff changeset
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
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
355 static ngx_int_t
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
356 ngx_conf_handler(ngx_conf_t *cf, ngx_int_t last)
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
357 {
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
358 char *rv;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
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
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
361 ngx_str_t *name;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
362 ngx_command_t *cmd;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
363
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
364 name = cf->args->elts;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
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
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
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
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
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
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
371 if (cmd == NULL) {
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
372 continue;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
373 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
374
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
375 for ( /* void */ ; cmd->name.len; cmd++) {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
376
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
377 if (name->len != cmd->name.len) {
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
378 continue;
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
379 }
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
380
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
381 if (ngx_strcmp(name->data, cmd->name.data) != 0) {
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
382 continue;
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
383 }
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
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
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
392
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
393 /* is the directive's location right ? */
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
394
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
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
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
397 }
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
398
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
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
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
403 return NGX_ERROR;
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
404 }
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
405
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
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
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
410 return NGX_ERROR;
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
411 }
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
412
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
413 /* is the directive's argument count right ? */
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
414
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
415 if (!(cmd->type & NGX_CONF_ANY)) {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
416
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
417 if (cmd->type & NGX_CONF_FLAG) {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
418
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
419 if (cf->args->nelts != 2) {
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
420 goto invalid;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
421 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
422
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
423 } else if (cmd->type & NGX_CONF_1MORE) {
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
424
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
425 if (cf->args->nelts < 2) {
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
426 goto invalid;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
427 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
428
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
429 } else if (cmd->type & NGX_CONF_2MORE) {
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
430
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
431 if (cf->args->nelts < 3) {
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
432 goto invalid;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
433 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
434
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
435 } else if (cf->args->nelts > NGX_CONF_MAX_ARGS) {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
436
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
437 goto invalid;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
438
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
439 } else if (!(cmd->type & argument_number[cf->args->nelts - 1]))
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
440 {
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
441 goto invalid;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
442 }
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
443 }
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
444
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
445 /* set up the directive's configuration context */
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
446
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
447 conf = NULL;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
448
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
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
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
451
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
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
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
454
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
455 } else if (cf->ctx) {
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
456 confp = *(void **) ((char *) cf->ctx + cmd->conf);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
457
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
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
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
460 }
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
461 }
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
462
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
463 rv = cmd->set(cf, cmd, conf);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
464
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
465 if (rv == NGX_CONF_OK) {
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
466 return NGX_OK;
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
467 }
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
468
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
469 if (rv == NGX_CONF_ERROR) {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
470 return NGX_ERROR;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
471 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
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
2c2271d3aac5 change wording
Igor Sysoev <igor@sysoev.ru>
parents: 1124
diff changeset
474 "\"%s\" directive %s", name->data, rv);
645
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
475
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
476 return NGX_ERROR;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
477 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
478 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
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
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
483
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
484 return NGX_ERROR;
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
485 }
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
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
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
489
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
490 return NGX_ERROR;
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
491
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
492 invalid:
4946078f0a79 nginx-0.3.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
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
c0fc685f8722 fix typo
Igor Sysoev <igor@sysoev.ru>
parents: 1352
diff changeset
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
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
497
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
498 return NGX_ERROR;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
499 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
500
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
501
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
502 static ngx_int_t
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
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
853fc7a46792 fix types
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
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
853fc7a46792 fix types
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
509 ngx_uint_t found, need_space, last_space, sharp_comment, variable;
2216
d17c487ddb52 too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents: 2214
diff changeset
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
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
518 variable = 0;
2847
3e10674139e4 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2785
diff changeset
519 quoted = 0;
3e10674139e4 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2785
diff changeset
520 s_quoted = 0;
3e10674139e4 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2785
diff changeset
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
d17c487ddb52 too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents: 2214
diff changeset
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
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
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
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
538
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
539 if (cf->conf_file->file.fd == NGX_INVALID_FILE) {
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
540 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
541 "unexpected end of parameter, "
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
542 "expecting \";\"");
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
543 return NGX_ERROR;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
544 }
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2064
diff changeset
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
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
549 return NGX_ERROR;
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
550 }
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
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
d17c487ddb52 too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents: 2214
diff changeset
555 len = b->pos - start;
d17c487ddb52 too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents: 2214
diff changeset
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
d17c487ddb52 too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents: 2214
diff changeset
558 cf->conf_file->line = start_line;
d17c487ddb52 too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents: 2214
diff changeset
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
d17c487ddb52 too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents: 2214
diff changeset
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
d17c487ddb52 too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents: 2214
diff changeset
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
d17c487ddb52 too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents: 2214
diff changeset
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
d17c487ddb52 too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents: 2214
diff changeset
581 }
d17c487ddb52 too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents: 2214
diff changeset
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
d17c487ddb52 too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents: 2214
diff changeset
604 b->pos = b->start + len;
d17c487ddb52 too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents: 2214
diff changeset
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
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
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
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
643 if (ch == '{') {
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
644 return NGX_CONF_BLOCK_START;
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
645 }
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
646
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
647 if (ch == ')') {
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
648 last_space = 1;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
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
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
651 } else {
6474
Ruslan Ermilov <ru@nginx.com>
parents: 6379
diff changeset
652 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
Ruslan Ermilov <ru@nginx.com>
parents: 6379
diff changeset
653 "unexpected \"%c\"", ch);
Ruslan Ermilov <ru@nginx.com>
parents: 6379
diff changeset
654 return NGX_ERROR;
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
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) {
d45effe5854c nginx-0.0.1-2002-12-19-10:08:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 19
diff changeset
659 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
660 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
661 }
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
662
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
663 start = b->pos - 1;
2216
d17c487ddb52 too long parameter error
Igor Sysoev <igor@sysoev.ru>
parents: 2214
diff changeset
664 start_line = cf->conf_file->line;
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
665
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
666 switch (ch) {
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
667
37
9fe40e51d4a3 nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 36
diff changeset
668 case ';':
9fe40e51d4a3 nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 36
diff changeset
669 case '{':
40
d5d4f3bba6f0 nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 37
diff changeset
670 if (cf->args->nelts == 0) {
1124
f1a8c6cd10ba ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents: 1123
diff changeset
671 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
672 "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
673 return NGX_ERROR;
d5d4f3bba6f0 nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 37
diff changeset
674 }
d5d4f3bba6f0 nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 37
diff changeset
675
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
676 if (ch == '{') {
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
677 return NGX_CONF_BLOCK_START;
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
678 }
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
679
37
9fe40e51d4a3 nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 36
diff changeset
680 return NGX_OK;
9fe40e51d4a3 nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 36
diff changeset
681
40
d5d4f3bba6f0 nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 37
diff changeset
682 case '}':
517
dadfa78d2270 nginx-0.1.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 511
diff changeset
683 if (cf->args->nelts != 0) {
1124
f1a8c6cd10ba ngx_log_error() > ngx_conf_log_error()
Igor Sysoev <igor@sysoev.ru>
parents: 1123
diff changeset
684 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
685 "unexpected \"}\"");
40
d5d4f3bba6f0 nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 37
diff changeset
686 return NGX_ERROR;
d5d4f3bba6f0 nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 37
diff changeset
687 }
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 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
690
d5d4f3bba6f0 nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 37
diff changeset
691 case '#':
d5d4f3bba6f0 nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 37
diff changeset
692 sharp_comment = 1;
d5d4f3bba6f0 nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 37
diff changeset
693 continue;
d5d4f3bba6f0 nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 37
diff changeset
694
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
695 case '\\':
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
696 quoted = 1;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
697 last_space = 0;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
698 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
699
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
700 case '"':
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
701 start++;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
702 d_quoted = 1;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
703 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
704 continue;
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
705
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
706 case '\'':
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
707 start++;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
708 s_quoted = 1;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
709 last_space = 0;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
710 continue;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
711
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
712 default:
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
713 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
714 }
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
715
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
716 } else {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
717 if (ch == '{' && variable) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
718 continue;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
719 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
720
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
721 variable = 0;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
722
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
723 if (ch == '\\') {
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
724 quoted = 1;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
725 continue;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
726 }
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
727
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
728 if (ch == '$') {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
729 variable = 1;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
730 continue;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
731 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
732
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
733 if (d_quoted) {
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
734 if (ch == '"') {
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
735 d_quoted = 0;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
736 need_space = 1;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
737 found = 1;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
738 }
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
739
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
740 } 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
741 if (ch == '\'') {
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
742 s_quoted = 0;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
743 need_space = 1;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
744 found = 1;
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
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
747 } else if (ch == ' ' || ch == '\t' || ch == CR || ch == LF
3642
ac33852faaac style fix
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
748 || ch == ';' || ch == '{')
ac33852faaac style fix
Igor Sysoev <igor@sysoev.ru>
parents: 3516
diff changeset
749 {
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
750 last_space = 1;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
751 found = 1;
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
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
754 if (found) {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
755 word = ngx_array_push(cf->args);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
756 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
757 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
758 }
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
759
6163
4e71788460fa Fixed excessive memory usage while parsing configuration.
Valentin Bartenev <vbart@nginx.com>
parents: 5784
diff changeset
760 word->data = ngx_pnalloc(cf->pool, b->pos - 1 - start + 1);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
761 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
762 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
763 }
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
764
37
9fe40e51d4a3 nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 36
diff changeset
765 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
766 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
767 len++)
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
768 {
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
769 if (*src == '\\') {
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
770 switch (src[1]) {
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
771 case '"':
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
772 case '\'':
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
773 case '\\':
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
774 src++;
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
775 break;
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
776
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
777 case 't':
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
778 *dst++ = '\t';
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
779 src += 2;
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
780 continue;
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
781
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
782 case 'r':
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
783 *dst++ = '\r';
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
784 src += 2;
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
785 continue;
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
786
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
787 case 'n':
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
788 *dst++ = '\n';
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
789 src += 2;
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
790 continue;
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
791 }
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 194
diff changeset
792
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
793 }
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
794 *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
795 }
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
796 *dst = '\0';
37
9fe40e51d4a3 nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 36
diff changeset
797 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
798
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
799 if (ch == ';') {
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
800 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
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
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
803 if (ch == '{') {
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
804 return NGX_CONF_BLOCK_START;
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
805 }
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
806
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 35
diff changeset
807 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
808 }
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
809 }
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
810 }
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
811 }
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
812
40
d5d4f3bba6f0 nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 37
diff changeset
813
4827
6e46016ea276 Fixed the "include" directive.
Ruslan Ermilov <ru@nginx.com>
parents: 4768
diff changeset
814 char *
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
815 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
816 {
727
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
817 char *rv;
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
818 ngx_int_t n;
1911
ade85ba31674 included file name must be allocated in pool,
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
819 ngx_str_t *value, file, name;
727
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
820 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
821
ca9a7f8c86da nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
822 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
823 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
824
727
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
825 ngx_log_debug1(NGX_LOG_DEBUG_CORE, cf->log, 0, "include %s", file.data);
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
826
5330
314c3d7cc3a5 Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5318
diff changeset
827 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
828 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
829 }
ca9a7f8c86da nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
830
1980
b5263e401884 ignore glob no match error
Igor Sysoev <igor@sysoev.ru>
parents: 1911
diff changeset
831 if (strpbrk((char *) file.data, "*?[") == NULL) {
b5263e401884 ignore glob no match error
Igor Sysoev <igor@sysoev.ru>
parents: 1911
diff changeset
832
b5263e401884 ignore glob no match error
Igor Sysoev <igor@sysoev.ru>
parents: 1911
diff changeset
833 ngx_log_debug1(NGX_LOG_DEBUG_CORE, cf->log, 0, "include %s", file.data);
b5263e401884 ignore glob no match error
Igor Sysoev <igor@sysoev.ru>
parents: 1911
diff changeset
834
b5263e401884 ignore glob no match error
Igor Sysoev <igor@sysoev.ru>
parents: 1911
diff changeset
835 return ngx_conf_parse(cf, &file);
b5263e401884 ignore glob no match error
Igor Sysoev <igor@sysoev.ru>
parents: 1911
diff changeset
836 }
b5263e401884 ignore glob no match error
Igor Sysoev <igor@sysoev.ru>
parents: 1911
diff changeset
837
727
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
838 ngx_memzero(&gl, sizeof(ngx_glob_t));
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
839
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
840 gl.pattern = file.data;
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
841 gl.log = cf->log;
1980
b5263e401884 ignore glob no match error
Igor Sysoev <igor@sysoev.ru>
parents: 1911
diff changeset
842 gl.test = 1;
727
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
843
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
844 if (ngx_open_glob(&gl) != NGX_OK) {
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
845 ngx_conf_log_error(NGX_LOG_EMERG, cf, ngx_errno,
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
846 ngx_open_glob_n " \"%s\" failed", file.data);
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
847 return NGX_CONF_ERROR;
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
848 }
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
849
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
850 rv = NGX_CONF_OK;
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
851
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
852 for ( ;; ) {
1911
ade85ba31674 included file name must be allocated in pool,
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
853 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
854
727
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
855 if (n != NGX_OK) {
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
856 break;
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
857 }
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
858
1911
ade85ba31674 included file name must be allocated in pool,
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
859 file.len = name.len++;
ade85ba31674 included file name must be allocated in pool,
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
860 file.data = ngx_pstrdup(cf->pool, &name);
5784
f87afb46ccd2 Core: improved ngx_pstrdup() error handling.
Tatsuhiko Kubo <cubicdaiya@gmail.com>
parents: 5681
diff changeset
861 if (file.data == NULL) {
f87afb46ccd2 Core: improved ngx_pstrdup() error handling.
Tatsuhiko Kubo <cubicdaiya@gmail.com>
parents: 5681
diff changeset
862 return NGX_CONF_ERROR;
f87afb46ccd2 Core: improved ngx_pstrdup() error handling.
Tatsuhiko Kubo <cubicdaiya@gmail.com>
parents: 5681
diff changeset
863 }
1911
ade85ba31674 included file name must be allocated in pool,
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
864
727
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
865 ngx_log_debug1(NGX_LOG_DEBUG_CORE, cf->log, 0, "include %s", file.data);
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
866
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
867 rv = ngx_conf_parse(cf, &file);
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
868
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
869 if (rv != NGX_CONF_OK) {
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
870 break;
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
871 }
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
872 }
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
873
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
874 ngx_close_glob(&gl);
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
875
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
876 return rv;
336
ca9a7f8c86da nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
877 }
ca9a7f8c86da nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
878
ca9a7f8c86da nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
879
5330
314c3d7cc3a5 Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5318
diff changeset
880 ngx_int_t
314c3d7cc3a5 Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5318
diff changeset
881 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
882 {
5331
e04083b79335 Style improved after 12dd27b74117.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5330
diff changeset
883 ngx_str_t *prefix;
e04083b79335 Style improved after 12dd27b74117.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5330
diff changeset
884
e04083b79335 Style improved after 12dd27b74117.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5330
diff changeset
885 prefix = conf_prefix ? &cycle->conf_prefix : &cycle->prefix;
e04083b79335 Style improved after 12dd27b74117.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5330
diff changeset
886
e04083b79335 Style improved after 12dd27b74117.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5330
diff changeset
887 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
888 }
314c3d7cc3a5 Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5318
diff changeset
889
314c3d7cc3a5 Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5318
diff changeset
890
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
891 ngx_open_file_t *
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
892 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
893 {
440
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 435
diff changeset
894 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
895 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
896 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
897 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
898
449
3b1e8c9df9ad nginx-0.1.0-2004-10-04-00:02:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 447
diff changeset
899 #if (NGX_SUPPRESS_WARN)
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3449
diff changeset
900 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
901 #endif
3b1e8c9df9ad nginx-0.1.0-2004-10-04-00:02:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 447
diff changeset
902
2785
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2772
diff changeset
903 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
904 full = *name;
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 435
diff changeset
905
5330
314c3d7cc3a5 Backed out f1a91825730a and 7094bd12c1ff.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5318
diff changeset
906 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
907 return NULL;
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 435
diff changeset
908 }
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 435
diff changeset
909
414
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 412
diff changeset
910 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
911 file = part->elts;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 412
diff changeset
912
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 412
diff changeset
913 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
914
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 412
diff changeset
915 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
916 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
917 break;
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 part = part->next;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 412
diff changeset
920 file = part->elts;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 412
diff changeset
921 i = 0;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 412
diff changeset
922 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 412
diff changeset
923
440
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 435
diff changeset
924 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
925 continue;
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
926 }
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
927
440
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 435
diff changeset
928 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
929 return &file[i];
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
930 }
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
931 }
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
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
934 file = ngx_list_push(&cycle->open_files);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
935 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
936 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
937 }
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
938
2785
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2772
diff changeset
939 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
940 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
941 file->name = full;
f390d1775430 nginx-0.1.0-2004-09-27-20:03:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 435
diff changeset
942
415
3c56e834be46 nginx-0.0.10-2004-09-05-23:54:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 414
diff changeset
943 } else {
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2536
diff changeset
944 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
945 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
946 }
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
947
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4966
diff changeset
948 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
949 file->data = NULL;
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
950
119
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
951 return file;
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
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
954
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
955 static void
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
956 ngx_conf_flush_files(ngx_cycle_t *cycle)
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
957 {
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
958 ngx_uint_t i;
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
959 ngx_list_part_t *part;
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
960 ngx_open_file_t *file;
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
961
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
962 ngx_log_debug0(NGX_LOG_DEBUG_CORE, cycle->log, 0, "flush files");
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
963
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
964 part = &cycle->open_files.part;
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
965 file = part->elts;
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
966
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
967 for (i = 0; /* void */ ; i++) {
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
968
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
969 if (i >= part->nelts) {
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
970 if (part->next == NULL) {
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
971 break;
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
972 }
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
973 part = part->next;
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
974 file = part->elts;
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
975 i = 0;
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
976 }
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
977
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4966
diff changeset
978 if (file[i].flush) {
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4966
diff changeset
979 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
980 }
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
981 }
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
982 }
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
983
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
984
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
985 void ngx_cdecl
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
986 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
987 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
988 {
2336
81d506883bba *) increase ngx_conf_log_error() buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2302
diff changeset
989 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
990 va_list args;
5bf52498665c nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 117
diff changeset
991
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
992 last = errstr + NGX_MAX_CONF_ERRSTR;
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
993
118
5bf52498665c nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 117
diff changeset
994 va_start(args, fmt);
2764
d4a717592877 use ngx_vslprintf(), ngx_slprintf()
Igor Sysoev <igor@sysoev.ru>
parents: 2758
diff changeset
995 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
996 va_end(args);
5bf52498665c nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 117
diff changeset
997
2336
81d506883bba *) increase ngx_conf_log_error() buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2302
diff changeset
998 if (err) {
2765
6d358aeaa989 ngx_log_errno()
Igor Sysoev <igor@sysoev.ru>
parents: 2764
diff changeset
999 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
1000 }
5bf52498665c nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 117
diff changeset
1001
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1002 if (cf->conf_file == NULL) {
2336
81d506883bba *) increase ngx_conf_log_error() buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2302
diff changeset
1003 ngx_log_error(level, cf->log, 0, "%*s", p - errstr, errstr);
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1004 return;
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1005 }
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1006
2772
9b107cdf53f6 *) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents: 2765
diff changeset
1007 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
1008 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
1009 p - errstr, errstr);
9b107cdf53f6 *) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents: 2765
diff changeset
1010 return;
9b107cdf53f6 *) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents: 2765
diff changeset
1011 }
9b107cdf53f6 *) do not show line number for -g option
Igor Sysoev <igor@sysoev.ru>
parents: 2765
diff changeset
1012
2336
81d506883bba *) increase ngx_conf_log_error() buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2302
diff changeset
1013 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
1014 p - errstr, errstr,
81d506883bba *) increase ngx_conf_log_error() buffer
Igor Sysoev <igor@sysoev.ru>
parents: 2302
diff changeset
1015 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
1016 }
5bf52498665c nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 117
diff changeset
1017
5bf52498665c nginx-0.0.1-2003-07-18-18:44:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 117
diff changeset
1018
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1019 char *
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1020 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
1021 {
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
1022 char *p = conf;
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
1023
435
5cdc4838d4e8 nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 416
diff changeset
1024 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
1025 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
1026 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
1027
435
5cdc4838d4e8 nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 416
diff changeset
1028 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
1029
435
5cdc4838d4e8 nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 416
diff changeset
1030 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
1031 return "is duplicate";
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
1032 }
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
1033
314
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1034 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
1035
1107
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1048
diff changeset
1036 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
1037 *fp = 1;
64
34d647deb1da nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
1038
1107
db7c468c447d ngx_strcasecmp()/ngx_strncasecmp()
Igor Sysoev <igor@sysoev.ru>
parents: 1048
diff changeset
1039 } 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
1040 *fp = 0;
64
34d647deb1da nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
1041
34d647deb1da nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
1042 } else {
119
cd54bcbaf3b5 nginx-0.0.1-2003-07-21-01:15:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 118
diff changeset
1043 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
1044 "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
1045 "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
1046 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
1047 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
1048 }
34d647deb1da nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
1049
435
5cdc4838d4e8 nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 416
diff changeset
1050 if (cmd->post) {
5cdc4838d4e8 nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 416
diff changeset
1051 post = cmd->post;
5cdc4838d4e8 nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 416
diff changeset
1052 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
1053 }
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 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
1056 }
34d647deb1da nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
1057
34d647deb1da nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
1058
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1059 char *
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1060 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
1061 {
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
1062 char *p = conf;
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
1063
412
199cd29f35a3 nginx-0.0.10-2004-08-31-19:32:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 343
diff changeset
1064 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
1065 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
1066
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
1067 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
1068
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 92
diff changeset
1069 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
1070 return "is duplicate";
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
1071 }
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
1072
314
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1073 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
1074
155
46eb23d9471d nginx-0.0.1-2003-10-22-20:38:26 import
Igor Sysoev <igor@sysoev.ru>
parents: 141
diff changeset
1075 *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
1076
412
199cd29f35a3 nginx-0.0.10-2004-08-31-19:32:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 343
diff changeset
1077 if (cmd->post) {
199cd29f35a3 nginx-0.0.10-2004-08-31-19:32:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 343
diff changeset
1078 post = cmd->post;
199cd29f35a3 nginx-0.0.10-2004-08-31-19:32:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 343
diff changeset
1079 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
1080 }
199cd29f35a3 nginx-0.0.10-2004-08-31-19:32:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 343
diff changeset
1081
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
1082 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
1083 }
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
1084
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
1085
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1086 char *
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1087 ngx_conf_set_str_array_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1088 {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1089 char *p = conf;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1090
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1091 ngx_str_t *value, *s;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1092 ngx_array_t **a;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1093 ngx_conf_post_t *post;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1094
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1095 a = (ngx_array_t **) (p + cmd->offset);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1096
1701
40d004d95d88 *) now ngx_conf_set_str_array_slot() tests NGX_CONF_UNSET_PTR
Igor Sysoev <igor@sysoev.ru>
parents: 1563
diff changeset
1097 if (*a == NGX_CONF_UNSET_PTR) {
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1098 *a = ngx_array_create(cf->pool, 4, sizeof(ngx_str_t));
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1099 if (*a == NULL) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1100 return NGX_CONF_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1101 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1102 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1103
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1104 s = ngx_array_push(*a);
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1105 if (s == NULL) {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1106 return NGX_CONF_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1107 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1108
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1109 value = cf->args->elts;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1110
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1111 *s = value[1];
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1112
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1113 if (cmd->post) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1114 post = cmd->post;
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1115 return post->post_handler(cf, post, s);
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1116 }
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1117
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1118 return NGX_CONF_OK;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1119 }
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1120
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1121
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1122 char *
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1123 ngx_conf_set_keyval_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1124 {
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1125 char *p = conf;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1126
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1127 ngx_str_t *value;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1128 ngx_array_t **a;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1129 ngx_keyval_t *kv;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1130 ngx_conf_post_t *post;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1131
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1132 a = (ngx_array_t **) (p + cmd->offset);
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1133
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1134 if (*a == NULL) {
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1135 *a = ngx_array_create(cf->pool, 4, sizeof(ngx_keyval_t));
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1136 if (*a == NULL) {
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1137 return NGX_CONF_ERROR;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1138 }
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1139 }
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1140
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1141 kv = ngx_array_push(*a);
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1142 if (kv == NULL) {
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1143 return NGX_CONF_ERROR;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1144 }
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1145
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1146 value = cf->args->elts;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1147
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1148 kv->key = value[1];
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1149 kv->value = value[2];
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1150
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1151 if (cmd->post) {
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1152 post = cmd->post;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 645
diff changeset
1153 return post->post_handler(cf, post, kv);
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1154 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1155
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1156 return NGX_CONF_OK;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1157 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1158
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1159
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1160 char *
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1161 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
1162 {
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
1163 char *p = conf;
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
1164
265
6468241715e6 nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1165 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
1166 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
1167 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
1168
156
afc333135a6b nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 155
diff changeset
1169
265
6468241715e6 nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1170 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
1171
afc333135a6b nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 155
diff changeset
1172 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
1173 return "is duplicate";
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
1174 }
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
1175
314
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1176 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
1177 *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
1178 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
1179 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
1180 }
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 89
diff changeset
1181
158
d377ee423603 nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 157
diff changeset
1182 if (cmd->post) {
d377ee423603 nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 157
diff changeset
1183 post = cmd->post;
d377ee423603 nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 157
diff changeset
1184 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
1185 }
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 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
1188 }
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 89
diff changeset
1189
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 89
diff changeset
1190
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1191 char *
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1192 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
1193 {
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
1194 char *p = conf;
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
1195
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 265
diff changeset
1196 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
1197 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
1198 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
1199
156
afc333135a6b nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 155
diff changeset
1200
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 265
diff changeset
1201 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
1202 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
1203 return "is duplicate";
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
1204 }
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
1205
314
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1206 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
1207
265
6468241715e6 nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1208 *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
1209 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
1210 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
1211 }
10
4f3879d9b6f6 nginx-0.0.1-2002-09-11-19:18:33 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1212
158
d377ee423603 nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 157
diff changeset
1213 if (cmd->post) {
d377ee423603 nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 157
diff changeset
1214 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
1215 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
1216 }
40
d5d4f3bba6f0 nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 37
diff changeset
1217
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
1218 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
1219 }
13
2aba961a1d34 nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 10
diff changeset
1220
40
d5d4f3bba6f0 nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 37
diff changeset
1221
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1222 char *
663
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1223 ngx_conf_set_off_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1224 {
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1225 char *p = conf;
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1226
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1227 off_t *op;
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1228 ngx_str_t *value;
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1229 ngx_conf_post_t *post;
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1230
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1231
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1232 op = (off_t *) (p + cmd->offset);
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1233 if (*op != NGX_CONF_UNSET) {
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1234 return "is duplicate";
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1235 }
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1236
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1237 value = cf->args->elts;
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1238
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1239 *op = ngx_parse_offset(&value[1]);
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1240 if (*op == (off_t) NGX_ERROR) {
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1241 return "invalid value";
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1242 }
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1243
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1244 if (cmd->post) {
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1245 post = cmd->post;
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1246 return post->post_handler(cf, post, op);
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1247 }
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1248
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1249 return NGX_CONF_OK;
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1250 }
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1251
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1252
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
1253 char *
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1254 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
1255 {
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
1256 char *p = conf;
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
1257
265
6468241715e6 nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1258 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
1259 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
1260 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
1261
156
afc333135a6b nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 155
diff changeset
1262
265
6468241715e6 nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1263 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
1264 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
1265 return "is duplicate";
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
1266 }
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
1267
314
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1268 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
1269
265
6468241715e6 nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1270 *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
1271 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
1272 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
1273 }
a7e45c45a95c nginx-0.0.1-2003-04-28-19:06:39 import
Igor Sysoev <igor@sysoev.ru>
parents: 71
diff changeset
1274
158
d377ee423603 nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 157
diff changeset
1275 if (cmd->post) {
d377ee423603 nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 157
diff changeset
1276 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
1277 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
1278 }
40
d5d4f3bba6f0 nginx-0.0.1-2002-12-26-10:24:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 37
diff changeset
1279
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 43
diff changeset
1280 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
1281 }
64
34d647deb1da nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
1282
84
fab4cb00fe5b nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 83
diff changeset
1283
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1284 char *
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1285 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
1286 {
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
1287 char *p = conf;
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
1288
265
6468241715e6 nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1289 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
1290 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
1291 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
1292
156
afc333135a6b nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 155
diff changeset
1293
265
6468241715e6 nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1294 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
1295 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
1296 return "is duplicate";
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
1297 }
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
1298
314
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1299 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
1300
265
6468241715e6 nginx-0.0.2-2004-02-20-19:48:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1301 *sp = ngx_parse_time(&value[1], 1);
4474
41f640a693de Time parsing cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
1302 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
1303 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
1304 }
fab4cb00fe5b nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 83
diff changeset
1305
158
d377ee423603 nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 157
diff changeset
1306 if (cmd->post) {
d377ee423603 nginx-0.0.1-2003-10-24-10:53:41 import
Igor Sysoev <igor@sysoev.ru>
parents: 157
diff changeset
1307 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
1308 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
1309 }
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 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
1312 }
fab4cb00fe5b nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 83
diff changeset
1313
fab4cb00fe5b nginx-0.0.1-2003-05-06-21:03:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 83
diff changeset
1314
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1315 char *
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1316 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
1317 {
166
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1318 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
1319
656d468f4ead nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1320 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
1321 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
1322
656d468f4ead nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1323
656d468f4ead nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1324 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
1325 if (bufs->num) {
656d468f4ead nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1326 return "is duplicate";
656d468f4ead nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1327 }
656d468f4ead nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1328
314
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1329 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
1330
656d468f4ead nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1331 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
1332 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
1333 return "invalid value";
656d468f4ead nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1334 }
656d468f4ead nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1335
157
70b36c805682 nginx-0.0.1-2003-10-23-19:54:19 import
Igor Sysoev <igor@sysoev.ru>
parents: 156
diff changeset
1336 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
1337 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
1338 return "invalid value";
656d468f4ead nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1339 }
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 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
1342 }
656d468f4ead nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1343
656d468f4ead nginx-0.0.1-2003-10-08-19:32:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 119
diff changeset
1344
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1345 char *
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1346 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
1347 {
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1348 char *p = conf;
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1349
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1350 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
1351 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
1352 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
1353
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1354 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
1355
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1356 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
1357 return "is duplicate";
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1358 }
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 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
1361 e = cmd->post;
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1362
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1363 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
1364 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
1365 || 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
1366 {
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1367 continue;
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
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1370 *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
1371
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1372 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
1373 }
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1374
6699
9cf2dce316e5 Fixed log levels of configuration parsing errors.
Valentin Bartenev <vbart@nginx.com>
parents: 6474
diff changeset
1375 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
1376 "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
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_ERROR;
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
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1381
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1382 char *
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1383 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
1384 {
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1385 char *p = conf;
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1386
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 265
diff changeset
1387 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
1388 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
1389 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
1390
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1391
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 265
diff changeset
1392 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
1393 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
1394 mask = cmd->post;
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1395
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1396 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
1397 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
1398
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1399 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
1400 || 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
1401 {
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1402 continue;
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1403 }
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 (*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
1406 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
1407 "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
1408
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1409 } else {
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1410 *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
1411 }
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1412
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1413 break;
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
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1416 if (mask[m].name.len == 0) {
6699
9cf2dce316e5 Fixed log levels of configuration parsing errors.
Valentin Bartenev <vbart@nginx.com>
parents: 6474
diff changeset
1417 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
1418 "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
1419
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1420 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
1421 }
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1422 }
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1423
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1424 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
1425 }
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1426
389d7ee9fa60 nginx-0.0.1-2003-10-30-11:51:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 158
diff changeset
1427
4759
4c36e15651f7 Fixed compilation with -Wmissing-prototypes.
Ruslan Ermilov <ru@nginx.com>
parents: 4598
diff changeset
1428 #if 0
4c36e15651f7 Fixed compilation with -Wmissing-prototypes.
Ruslan Ermilov <ru@nginx.com>
parents: 4598
diff changeset
1429
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1430 char *
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1431 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
1432 {
34d647deb1da nginx-0.0.1-2003-03-04-09:33:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 59
diff changeset
1433 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
1434 }
156
afc333135a6b nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 155
diff changeset
1435
4759
4c36e15651f7 Fixed compilation with -Wmissing-prototypes.
Ruslan Ermilov <ru@nginx.com>
parents: 4598
diff changeset
1436 #endif
4c36e15651f7 Fixed compilation with -Wmissing-prototypes.
Ruslan Ermilov <ru@nginx.com>
parents: 4598
diff changeset
1437
156
afc333135a6b nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 155
diff changeset
1438
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1439 char *
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1440 ngx_conf_deprecated(ngx_conf_t *cf, void *post, void *data)
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1441 {
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1442 ngx_conf_deprecated_t *d = post;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1443
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1444 ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1445 "the \"%s\" directive is deprecated, "
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1446 "use the \"%s\" directive instead",
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1447 d->old_name, d->new_name);
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1448
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1449 return NGX_CONF_OK;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1450 }
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1451
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1452
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1453 char *
503
b1648294f693 nginx-0.1.26-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
1454 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
1455 {
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
1456 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
1457 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
1458
172
caa57ddf6d77 nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 167
diff changeset
1459 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
1460 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
1461 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
1462 }
caa57ddf6d77 nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 167
diff changeset
1463
caa57ddf6d77 nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 167
diff changeset
1464 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
1465 "value must be equal to or greater than %i",
834049edae24 Fixed grammar in error messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4474
diff changeset
1466 bounds->low);
172
caa57ddf6d77 nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 167
diff changeset
1467
caa57ddf6d77 nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 167
diff changeset
1468 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
1469 }
caa57ddf6d77 nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 167
diff changeset
1470
caa57ddf6d77 nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 167
diff changeset
1471 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
1472 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
1473 }
afc333135a6b nginx-0.0.1-2003-10-23-10:13:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 155
diff changeset
1474
172
caa57ddf6d77 nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 167
diff changeset
1475 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
507
cd3117ad9aab nginx-0.1.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
1476 "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
1477 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
1478
caa57ddf6d77 nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 167
diff changeset
1479 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
1480 }