- 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
This commit is contained in:
Bernhard Reutner-Fischer 2006-06-14 16:36:45 +00:00
parent 66e3a222cd
commit df798b7f58

View File

@ -65,8 +65,6 @@ static void log_su (const char *successful, const char *old_user,
int su_main ( int argc, char **argv ) int su_main ( int argc, char **argv )
{ {
unsigned long flags; unsigned long flags;
int opt_preserve;
int opt_loginshell;
char *opt_shell = 0; char *opt_shell = 0;
char *opt_command = 0; char *opt_command = 0;
char *opt_username = DEFAULT_USER; char *opt_username = DEFAULT_USER;
@ -81,11 +79,12 @@ int su_main ( int argc, char **argv )
flags = bb_getopt_ulflags(argc, argv, "mplc:s:", flags = bb_getopt_ulflags(argc, argv, "mplc:s:",
&opt_command, &opt_shell); &opt_command, &opt_shell);
opt_preserve = flags & 3; #define SU_OPT_m (3)
opt_loginshell = (flags & 4 ? 1 : 0); #define SU_OPT_p (3)
#define SU_OPT_l (4)
if (optind < argc && argv[optind][0] == '-' && argv[optind][1] == 0) { if (optind < argc && argv[optind][0] == '-' && argv[optind][1] == 0) {
opt_loginshell = 1; flags |= SU_OPT_l;
++optind; ++optind;
} }
@ -137,7 +136,7 @@ int su_main ( int argc, char **argv )
closelog(); closelog();
#endif #endif
if ( !opt_shell && opt_preserve ) if ( !opt_shell && (flags & SU_OPT_p))
opt_shell = getenv ( "SHELL" ); opt_shell = getenv ( "SHELL" );
if ( opt_shell && cur_uid && restricted_shell ( pw->pw_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; opt_shell = pw->pw_shell;
change_identity ( pw ); 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 #if ENABLE_SELINUX
set_current_security_context(NULL); set_current_security_context(NULL);
#endif #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; return EXIT_FAILURE;
} }