From 9da732d96c7f9c2a815ee85ce8ae207ec8d379a0 Mon Sep 17 00:00:00 2001 From: "roberto@precise64" Date: Thu, 26 Apr 2012 09:17:45 +0200 Subject: [PATCH] added --if-reload/--if-not-reload and --unenv --- utils.c | 14 ++++++++++++++ uwsgi.c | 10 ++++++++++ uwsgi.h | 3 +++ uwsgiconfig.py | 2 +- 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/utils.c b/utils.c index 5365ed7a..d63d710e 100644 --- a/utils.c +++ b/utils.c @@ -1913,6 +1913,20 @@ int uwsgi_logic_opt_if_not_env(char *key, char *value) { return 0; } +int uwsgi_logic_opt_if_reload(char *key, char *value) { + if (uwsgi.is_a_reload) { + return 1; + } + return 0; +} + +int uwsgi_logic_opt_if_not_reload(char *key, char *value) { + if (!uwsgi.is_a_reload) { + return 1; + } + return 0; +} + int uwsgi_logic_opt_if_file(char *key, char *value) { if (uwsgi_is_file(uwsgi.logic_opt_data)) { diff --git a/uwsgi.c b/uwsgi.c index b4b479dc..8b3a6910 100644 --- a/uwsgi.c +++ b/uwsgi.c @@ -71,6 +71,9 @@ static struct uwsgi_option uwsgi_base_options[] = { {"if-not-env", required_argument, 0, "(opt logic) check for environment variable", uwsgi_opt_logic, (void *) uwsgi_logic_opt_if_not_env, UWSGI_OPT_IMMEDIATE}, {"ifenv", required_argument, 0, "(opt logic) check for environment variable", uwsgi_opt_logic, (void *) uwsgi_logic_opt_if_env, UWSGI_OPT_IMMEDIATE}, + {"if-reload", required_argument, 0, "(opt logic) check for reload", uwsgi_opt_logic, (void *) uwsgi_logic_opt_if_reload, UWSGI_OPT_IMMEDIATE}, + {"if-not-reload", required_argument, 0, "(opt logic) check for reload", uwsgi_opt_logic, (void *) uwsgi_logic_opt_if_not_reload, UWSGI_OPT_IMMEDIATE}, + {"if-exists", required_argument, 0, "(opt logic) check for file/directory existance", uwsgi_opt_logic, (void *) uwsgi_logic_opt_if_exists, UWSGI_OPT_IMMEDIATE}, {"if-not-exists", required_argument, 0, "(opt logic) check for file/directory existance", uwsgi_opt_logic, (void *) uwsgi_logic_opt_if_not_exists, UWSGI_OPT_IMMEDIATE}, {"ifexists", required_argument, 0, "(opt logic) check for file/directory existance", uwsgi_opt_logic, (void *) uwsgi_logic_opt_if_exists, UWSGI_OPT_IMMEDIATE}, @@ -394,6 +397,7 @@ static struct uwsgi_option uwsgi_base_options[] = { {"close-on-exec", no_argument, 0, "set close-on-exec on sockets (could be required for spawning processes in requests)", uwsgi_opt_true, &uwsgi.close_on_exec, 0}, {"mode", required_argument, 0, "set uWSGI custom mode", uwsgi_opt_set_str, &uwsgi.mode,0}, {"env", required_argument, 0, "set environment variable", uwsgi_opt_set_env, NULL, 0}, + {"unenv", required_argument, 0, "unset environment variable", uwsgi_opt_unset_env, NULL, 0}, {"vacuum", no_argument, 0, "try to remove all of the generated file/sockets", uwsgi_opt_true, &uwsgi.vacuum,0}, #ifdef __linux__ {"cgroup", required_argument, 0, "put the processes in the specified cgroup", uwsgi_opt_add_string_list, &uwsgi.cgroup,0}, @@ -3708,6 +3712,12 @@ void uwsgi_opt_set_env(char *opt, char *value, void *none) { } } +void uwsgi_opt_unset_env(char *opt, char *value, void *none) { + if (unsetenv(value)) { + uwsgi_error("unsetenv()"); + } +} + void uwsgi_opt_pidfile_signal(char *opt, char *pidfile, void *sig) { long *signum_fake_ptr = (long *) sig; diff --git a/uwsgi.h b/uwsgi.h index b59305ae..fe316260 100644 --- a/uwsgi.h +++ b/uwsgi.h @@ -2720,6 +2720,7 @@ void uwsgi_opt_add_daemon(char *, char *, void *); void uwsgi_opt_set_uid(char *, char *, void *); void uwsgi_opt_set_gid(char *, char *, void *); void uwsgi_opt_set_env(char *, char *, void *); +void uwsgi_opt_unset_env(char *, char *, void *); void uwsgi_opt_pidfile_signal(char *, char *, void *); void uwsgi_opt_add_app(char *, char *, void *); @@ -2756,6 +2757,8 @@ int uwsgi_logic_opt_if_file(char *, char *); int uwsgi_logic_opt_if_not_file(char *, char *); int uwsgi_logic_opt_if_dir(char *, char *); int uwsgi_logic_opt_if_not_dir(char *, char *); +int uwsgi_logic_opt_if_reload(char *, char *); +int uwsgi_logic_opt_if_not_reload(char *, char *); #ifdef UWSGI_CAP diff --git a/uwsgiconfig.py b/uwsgiconfig.py index bfdae1e0..67cb14e6 100644 --- a/uwsgiconfig.py +++ b/uwsgiconfig.py @@ -1,6 +1,6 @@ # uWSGI build system -uwsgi_version = '1.2-rc2' +uwsgi_version = '1.2-rc3' import os import re