diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-02-26 09:52:45 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-02-26 09:52:45 +0100 |
commit | fd686a262fa34b71900b010b4b31d7e2e3f3385c (patch) | |
tree | 102c38699d6d732ed0f5bc2e478a824e59a59f75 | |
parent | 99709ab03387ca623e3fc1cac69d242ed44da45c (diff) |
setup_environment(): eliminate one parameter
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | include/libbb.h | 7 | ||||
-rw-r--r-- | libbb/setup_environment.c | 4 | ||||
-rw-r--r-- | loginutils/login.c | 5 | ||||
-rw-r--r-- | loginutils/su.c | 6 | ||||
-rw-r--r-- | miscutils/crontab.c | 5 |
5 files changed, 16 insertions, 11 deletions
diff --git a/include/libbb.h b/include/libbb.h index 9d99b0d1a..98080e841 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -1156,9 +1156,10 @@ extern int restricted_shell(const char *shell) FAST_FUNC; * SHELL=shell * else does nothing */ -#define SETUP_ENV_CHANGEENV (1<<0) -#define SETUP_ENV_TO_TMP (1<<1) -extern void setup_environment(const char *shell, int clear_env, int flags, const struct passwd *pw) FAST_FUNC; +#define SETUP_ENV_CHANGEENV (1 << 0) +#define SETUP_ENV_CLEARENV (1 << 1) +#define SETUP_ENV_TO_TMP (1 << 2) +extern void setup_environment(const char *shell, int flags, const struct passwd *pw) FAST_FUNC; extern int correct_password(const struct passwd *pw) FAST_FUNC; /* Returns a malloced string */ #if !ENABLE_USE_BB_CRYPT diff --git a/libbb/setup_environment.c b/libbb/setup_environment.c index f0802f0e5..13e60d8e4 100644 --- a/libbb/setup_environment.c +++ b/libbb/setup_environment.c @@ -30,7 +30,7 @@ #include "libbb.h" -void FAST_FUNC setup_environment(const char *shell, int clear_env, int flags, const struct passwd *pw) +void FAST_FUNC setup_environment(const char *shell, int flags, const struct passwd *pw) { /* Change the current working directory to be the home directory * of the user */ @@ -39,7 +39,7 @@ void FAST_FUNC setup_environment(const char *shell, int clear_env, int flags, co bb_error_msg("can't chdir to home directory '%s'", pw->pw_dir); } - if (clear_env) { + if (flags & SETUP_ENV_CLEARENV) { const char *term; /* Leave TERM unchanged. Set HOME, SHELL, USER, LOGNAME, PATH. diff --git a/loginutils/login.c b/loginutils/login.c index 974125d88..b5e348b66 100644 --- a/loginutils/login.c +++ b/loginutils/login.c @@ -477,8 +477,9 @@ int login_main(int argc UNUSED_PARAM, char **argv) tmp = pw->pw_shell; if (!tmp || !*tmp) tmp = DEFAULT_SHELL; - /* setup_environment params: shell, clear_env, change_env, pw */ - setup_environment(tmp, !(opt & LOGIN_OPT_p), SETUP_ENV_CHANGEENV, pw); + setup_environment(tmp, + (!(opt & LOGIN_OPT_p) * SETUP_ENV_CLEARENV) + SETUP_ENV_CHANGEENV, + pw); motd(); diff --git a/loginutils/su.c b/loginutils/su.c index a3f7ed8a0..6356631b8 100644 --- a/loginutils/su.c +++ b/loginutils/su.c @@ -102,8 +102,10 @@ int su_main(int argc UNUSED_PARAM, char **argv) opt_shell = pw->pw_shell; change_identity(pw); - /* setup_environment params: shell, clear_env, change_env, pw */ - setup_environment(opt_shell, flags & SU_OPT_l, !(flags & SU_OPT_mp), pw); + setup_environment(opt_shell, + ((flags & SU_OPT_l) / SU_OPT_l * SETUP_ENV_CLEARENV) + + (!(flags & SU_OPT_mp) * SETUP_ENV_CHANGEENV), + pw); IF_SELINUX(set_current_security_context(NULL);) /* Never returns */ diff --git a/miscutils/crontab.c b/miscutils/crontab.c index 7d5709521..5557bc491 100644 --- a/miscutils/crontab.c +++ b/miscutils/crontab.c @@ -32,8 +32,9 @@ static void edit_file(const struct passwd *pas, const char *file) /* CHILD - change user and run editor */ /* initgroups, setgid, setuid */ change_identity(pas); - setup_environment(DEFAULT_SHELL, 0, - SETUP_ENV_CHANGEENV | SETUP_ENV_TO_TMP, pas); + setup_environment(DEFAULT_SHELL, + SETUP_ENV_CHANGEENV | SETUP_ENV_TO_TMP, + pas); ptr = getenv("VISUAL"); if (!ptr) { ptr = getenv("EDITOR"); |