aboutsummaryrefslogtreecommitdiff
path: root/src/core/ngx_conf_file.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/ngx_conf_file.c')
-rw-r--r--src/core/ngx_conf_file.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/core/ngx_conf_file.c b/src/core/ngx_conf_file.c
index a68192fe0..514d55bad 100644
--- a/src/core/ngx_conf_file.c
+++ b/src/core/ngx_conf_file.c
@@ -641,7 +641,7 @@ ngx_conf_include(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
ngx_log_debug1(NGX_LOG_DEBUG_CORE, cf->log, 0, "include %s", file.data);
- if (ngx_conf_full_name(cf->cycle, &file) == NGX_ERROR) {
+ if (ngx_conf_full_name(cf->cycle, &file, 1) == NGX_ERROR) {
return NGX_CONF_ERROR;
}
@@ -681,9 +681,10 @@ ngx_conf_include(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
ngx_int_t
-ngx_conf_full_name(ngx_cycle_t *cycle, ngx_str_t *name)
+ngx_conf_full_name(ngx_cycle_t *cycle, ngx_str_t *name, ngx_uint_t conf_prefix)
{
- u_char *p;
+ size_t len;
+ u_char *p, *prefix;
ngx_str_t old;
if (name->data[0] == '/') {
@@ -704,14 +705,22 @@ ngx_conf_full_name(ngx_cycle_t *cycle, ngx_str_t *name)
old = *name;
- name->len = cycle->root.len + old.len;
+ if (conf_prefix) {
+ len = sizeof(NGX_CONF_PREFIX) - 1;
+ prefix = (u_char *) NGX_CONF_PREFIX;
+ } else {
+ len = cycle->root.len;
+ prefix = cycle->root.data;
+ }
+
+ name->len = len + old.len;
name->data = ngx_palloc(cycle->pool, name->len + 1);
if (name->data == NULL) {
return NGX_ERROR;
}
- p = ngx_cpymem(name->data, cycle->root.data, cycle->root.len),
+ p = ngx_cpymem(name->data, prefix, len);
ngx_cpystrn(p, old.data, old.len + 1);
return NGX_OK;
@@ -734,7 +743,7 @@ ngx_conf_open_file(ngx_cycle_t *cycle, ngx_str_t *name)
if (name) {
full = *name;
- if (ngx_conf_full_name(cycle, &full) == NGX_ERROR) {
+ if (ngx_conf_full_name(cycle, &full, 0) == NGX_ERROR) {
return NULL;
}