From 0c2bda940cd97b4ce580fc13ac3ae32c5f3299a8 Mon Sep 17 00:00:00 2001 From: Simon Shi Date: Sat, 5 Jan 2019 09:34:52 +0800 Subject: [PATCH] Rename variable --- src/common.h | 2 +- src/jconf.c | 4 ++-- src/jconf.h | 2 +- src/manager.c | 39 ++++++++++++++++++++++----------------- src/manager.h | 3 +-- 5 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/common.h b/src/common.h index c15e7406..a36b134d 100644 --- a/src/common.h +++ b/src/common.h @@ -70,7 +70,7 @@ enum { GETOPT_VAL_KEY, GETOPT_VAL_MANAGER_ADDRESS, GETOPT_VAL_EXECUTABLE, - GETOPT_VAL_HOMEDIR, + GETOPT_VAL_WORKDIR, }; #endif // _COMMON_H diff --git a/src/jconf.c b/src/jconf.c index 5bc8a6e8..5509be5b 100644 --- a/src/jconf.c +++ b/src/jconf.c @@ -328,8 +328,8 @@ read_jconf(const char *file) value, json_boolean, "invalid config file: option 'no_delay' must be a boolean"); conf.no_delay = value->u.boolean; - } else if (strcmp(name, "homedir") == 0) { - conf.homedir = to_string(value); + } else if (strcmp(name, "workdir") == 0) { + conf.workdir = to_string(value); } } } else { diff --git a/src/jconf.h b/src/jconf.h index 80d9dcc8..59385719 100644 --- a/src/jconf.h +++ b/src/jconf.h @@ -85,7 +85,7 @@ typedef struct { int mptcp; int ipv6_first; int no_delay; - char *homedir; + char *workdir; } jconf_t; jconf_t *read_jconf(const char *file); diff --git a/src/manager.c b/src/manager.c index 757b7c4c..3ac9e416 100644 --- a/src/manager.c +++ b/src/manager.c @@ -212,10 +212,10 @@ construct_command_line(struct manager_ctx *manager, struct server *server) int len = strlen(cmd); snprintf(cmd + len, BUF_SIZE - len, " -d \"%s\"", manager->nameservers); } - if (manager->homedir) + if (manager->workdir) { int len = strlen(cmd); - snprintf(cmd + len, BUF_SIZE - len, " -D \"%s\"", manager->homedir); + snprintf(cmd + len, BUF_SIZE - len, " -D \"%s\"", manager->workdir); } for (i = 0; i < manager->host_num; i++) { int len = strlen(cmd); @@ -861,7 +861,7 @@ main(int argc, char **argv) char *manager_address = NULL; char *plugin = NULL; char *plugin_opts = NULL; - char *homedir = NULL; + char *workdir = NULL; int fast_open = 0; int no_delay = 0; @@ -894,7 +894,7 @@ main(int argc, char **argv) { "plugin", required_argument, NULL, GETOPT_VAL_PLUGIN }, { "plugin-opts", required_argument, NULL, GETOPT_VAL_PLUGIN_OPTS }, { "password", required_argument, NULL, GETOPT_VAL_PASSWORD }, - { "homedir", required_argument, NULL, GETOPT_VAL_HOMEDIR }, + { "workdir", required_argument, NULL, GETOPT_VAL_WORKDIR }, { "help", no_argument, NULL, GETOPT_VAL_HELP }, { NULL, 0, NULL, 0 } }; @@ -973,9 +973,9 @@ main(int argc, char **argv) case '6': ipv6first = 1; break; - case GETOPT_VAL_HOMEDIR: + case GETOPT_VAL_WORKDIR: case 'D': - homedir = optarg; + workdir = optarg; break; case 'v': verbose = 1; @@ -1050,9 +1050,9 @@ main(int argc, char **argv) if (ipv6first == 0) { ipv6first = conf->ipv6_first; } - if (homedir == NULL) + if (workdir == NULL) { - homedir = conf->homedir; + workdir = conf->workdir; } #ifdef HAVE_SETRLIMIT if (nofile == 0) { @@ -1134,7 +1134,7 @@ main(int argc, char **argv) manager.plugin = plugin; manager.plugin_opts = plugin_opts; manager.ipv6first = ipv6first; - manager.homedir = homedir; + manager.workdir = workdir; #ifdef HAVE_SETRLIMIT manager.nofile = nofile; #endif @@ -1155,17 +1155,22 @@ main(int argc, char **argv) struct passwd *pw = getpwuid(getuid()); - if (homedir == NULL || strlen(homedir) == 0) { - homedir = pw->pw_dir; + if (workdir == NULL || strlen(workdir) == 0) { + workdir = pw->pw_dir; // If home dir is still not defined or set to nologin/nonexistent, fall back to /tmp - if (strstr(homedir, "nologin") || strstr(homedir, "nonexistent") || homedir == NULL || strlen(homedir) == 0) { - homedir = "/tmp"; + if (strstr(workdir, "nologin") || strstr(workdir, "nonexistent") || workdir == NULL || strlen(workdir) == 0) { + workdir = "/tmp"; } - LOGI("working directory points to %s", homedir); + + working_dir_size = strlen(workdir) + 15; + working_dir = ss_malloc(working_dir_size); + snprintf(working_dir, working_dir_size, "%s/.shadowsocks", workdir); + } else { + working_dir_size = strlen(workdir) + 2; + working_dir = ss_malloc(working_dir_size); + snprintf(working_dir, working_dir_size, "%s", workdir); } - working_dir_size = strlen(homedir) + 15; - working_dir = ss_malloc(working_dir_size); - snprintf(working_dir, working_dir_size, "%s/.shadowsocks", homedir); + LOGI("working directory points to %s", working_dir); int err = mkdir(working_dir, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); if (err != 0 && errno != EEXIST) { diff --git a/src/manager.h b/src/manager.h index f07144fb..6af71f06 100644 --- a/src/manager.h +++ b/src/manager.h @@ -59,7 +59,7 @@ struct manager_ctx { char *nameservers; int mtu; int ipv6first; - char *homedir; + char *workdir; #ifdef HAVE_SETRLIMIT int nofile; #endif @@ -74,7 +74,6 @@ struct server { char *method; char *plugin; char *plugin_opts; - char *homedir; uint64_t traffic; };