summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer2006-06-14 16:36:45 +0000
committerBernhard Reutner-Fischer2006-06-14 16:36:45 +0000
commitdf798b7f58237e414e738fa0bd453cf13471bf76 (patch)
tree007d7f56a3b269a406bf7baedb19097a690d1418
parent66e3a222cd430d5a0a371f351131f9dd63b158dc (diff)
downloadbusybox-df798b7f58237e414e738fa0bd453cf13471bf76.zip
busybox-df798b7f58237e414e738fa0bd453cf13471bf76.tar.gz
- minor size tweak
text data bss dec hex filename 613 0 0 613 265 loginutils/su.o.orig 605 0 0 605 25d loginutils/su.o
-rw-r--r--loginutils/su.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/loginutils/su.c b/loginutils/su.c
index a6fcd73..1273831 100644
--- a/loginutils/su.c
+++ b/loginutils/su.c
@@ -65,8 +65,6 @@ static void log_su (const char *successful, const char *old_user,
int su_main ( int argc, char **argv )
{
unsigned long flags;
- int opt_preserve;
- int opt_loginshell;
char *opt_shell = 0;
char *opt_command = 0;
char *opt_username = DEFAULT_USER;
@@ -81,11 +79,12 @@ int su_main ( int argc, char **argv )
flags = bb_getopt_ulflags(argc, argv, "mplc:s:",
&opt_command, &opt_shell);
- opt_preserve = flags & 3;
- opt_loginshell = (flags & 4 ? 1 : 0);
+#define SU_OPT_m (3)
+#define SU_OPT_p (3)
+#define SU_OPT_l (4)
if (optind < argc && argv[optind][0] == '-' && argv[optind][1] == 0) {
- opt_loginshell = 1;
+ flags |= SU_OPT_l;
++optind;
}
@@ -137,7 +136,7 @@ int su_main ( int argc, char **argv )
closelog();
#endif
- if ( !opt_shell && opt_preserve )
+ if ( !opt_shell && (flags & SU_OPT_p))
opt_shell = getenv ( "SHELL" );
if ( opt_shell && cur_uid && restricted_shell ( pw->pw_shell )) {
@@ -153,11 +152,11 @@ int su_main ( int argc, char **argv )
opt_shell = pw->pw_shell;
change_identity ( pw );
- setup_environment ( opt_shell, opt_loginshell, !opt_preserve, pw );
+ setup_environment(opt_shell, flags & SU_OPT_l, !(flags & SU_OPT_p), pw);
#if ENABLE_SELINUX
set_current_security_context(NULL);
#endif
- run_shell ( opt_shell, opt_loginshell, opt_command, (const char**)opt_args);
+ run_shell(opt_shell, flags & SU_OPT_l, opt_command, (const char**)opt_args);
return EXIT_FAILURE;
}