summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorMax Romanov <max.romanov@nginx.com>2017-09-05 10:22:44 -0700
committerMax Romanov <max.romanov@nginx.com>2017-09-05 10:22:44 -0700
commitf1685e371fe8a3bb9442fe2c5e0e33f5da0ac4f9 (patch)
treeed499fb4dabc60c607f6591cafa6520a99d10803 /src
parentdb6d2b96877dac089e22817fc9896a45ea410d8d (diff)
downloadunit-f1685e371fe8a3bb9442fe2c5e0e33f5da0ac4f9.tar.gz
unit-f1685e371fe8a3bb9442fe2c5e0e33f5da0ac4f9.tar.bz2
Introducing working_directory directive for applications.
Diffstat (limited to '')
-rw-r--r--src/nxt_application.c13
-rw-r--r--src/nxt_application.h2
-rw-r--r--src/nxt_conf_validation.c15
-rw-r--r--src/nxt_main_process.c6
4 files changed, 36 insertions, 0 deletions
diff --git a/src/nxt_application.c b/src/nxt_application.c
index b887c819..232f5a7e 100644
--- a/src/nxt_application.c
+++ b/src/nxt_application.c
@@ -297,6 +297,19 @@ nxt_app_start(nxt_task_t *task, void *data)
nxt_app = nxt_app_module_load(task, lang->file);
}
+ if (app_conf->working_directory != NULL &&
+ app_conf->working_directory[0] != 0)
+ {
+ ret = chdir(app_conf->working_directory);
+
+ if (nxt_slow_path(ret != 0)) {
+ nxt_log(task, NXT_LOG_WARN, "chdir(%s) failed %E",
+ app_conf->working_directory, nxt_errno);
+
+ return NXT_ERROR;
+ }
+ }
+
if (nxt_slow_path(nxt_thread_mutex_create(&nxt_app_mutex) != NXT_OK)) {
return NXT_ERROR;
}
diff --git a/src/nxt_application.h b/src/nxt_application.h
index 5998e3e9..ca968299 100644
--- a/src/nxt_application.h
+++ b/src/nxt_application.h
@@ -57,6 +57,8 @@ struct nxt_common_app_conf_s {
nxt_str_t user;
nxt_str_t group;
+ char *working_directory;
+
uint32_t workers;
union {
diff --git a/src/nxt_conf_validation.c b/src/nxt_conf_validation.c
index 5cc2569f..94371ca8 100644
--- a/src/nxt_conf_validation.c
+++ b/src/nxt_conf_validation.c
@@ -80,6 +80,11 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_python_members[] = {
NULL,
NULL },
+ { nxt_string("working_directory"),
+ NXT_CONF_STRING,
+ NULL,
+ NULL },
+
{ nxt_string("path"),
NXT_CONF_STRING,
NULL,
@@ -115,6 +120,11 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_php_members[] = {
NULL,
NULL },
+ { nxt_string("working_directory"),
+ NXT_CONF_STRING,
+ NULL,
+ NULL },
+
{ nxt_string("root"),
NXT_CONF_STRING,
NULL,
@@ -155,6 +165,11 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_go_members[] = {
NULL,
NULL },
+ { nxt_string("working_directory"),
+ NXT_CONF_STRING,
+ NULL,
+ NULL },
+
{ nxt_string("executable"),
NXT_CONF_STRING,
NULL,
diff --git a/src/nxt_main_process.c b/src/nxt_main_process.c
index 34fc7ea0..a7e1adb1 100644
--- a/src/nxt_main_process.c
+++ b/src/nxt_main_process.c
@@ -105,6 +105,12 @@ static nxt_conf_map_t nxt_common_app_conf[] = {
},
{
+ nxt_string("working_directory"),
+ NXT_CONF_MAP_CSTRZ,
+ offsetof(nxt_common_app_conf_t, working_directory),
+ },
+
+ {
nxt_string("workers"),
NXT_CONF_MAP_INT32,
offsetof(nxt_common_app_conf_t, workers),