diff options
-rw-r--r-- | include/libbb.h | 1 | ||||
-rw-r--r-- | libbb/run_shell.c | 9 | ||||
-rw-r--r-- | loginutils/login.c | 2 | ||||
-rw-r--r-- | loginutils/sulogin.c | 2 |
4 files changed, 10 insertions, 4 deletions
diff --git a/include/libbb.h b/include/libbb.h index c23018f..8f1ee7e 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -1607,6 +1607,7 @@ void msleep(unsigned ms) FAST_FUNC; void sleep1(void) FAST_FUNC; void change_identity(const struct passwd *pw) FAST_FUNC; void exec_shell(const char *shell, int loginshell, const char **args) NORETURN FAST_FUNC; +void exec_login_shell(const char *shell) NORETURN FAST_FUNC; void exec_prog_or_SHELL(char **argv) NORETURN FAST_FUNC; /* Returns $SHELL, getpwuid(getuid())->pw_shell, or DEFAULT_SHELL. diff --git a/libbb/run_shell.c b/libbb/run_shell.c index 9bec43b..c22bba8 100644 --- a/libbb/run_shell.c +++ b/libbb/run_shell.c @@ -84,14 +84,19 @@ void FAST_FUNC exec_shell(const char *shell, int loginshell, const char **additi bb_perror_msg_and_die("can't execute '%s'", shell); } +void FAST_FUNC exec_login_shell(const char *shell) +{ + exec_shell(shell, 1, NULL); +} + /* Typical idiom for applets which exec *optional* PROG [ARGS] */ void FAST_FUNC exec_prog_or_SHELL(char **argv) { if (argv[0]) { BB_EXECVP_or_die(argv); } - /* Why login=1? Both users (nsenter and unshare) do indeed exec + /* Both users (nsenter and unshare) do indeed exec * a _login_ shell (with dash in argv[0])! */ - exec_shell(getenv("SHELL"), /*login:*/ 1, NULL); + exec_login_shell(getenv("SHELL")); } diff --git a/loginutils/login.c b/loginutils/login.c index aacd472..de05631 100644 --- a/loginutils/login.c +++ b/loginutils/login.c @@ -602,7 +602,7 @@ int login_main(int argc UNUSED_PARAM, char **argv) signal(SIGINT, SIG_DFL); /* Exec login shell with no additional parameters */ - exec_shell(pw->pw_shell, 1, NULL); + exec_login_shell(pw->pw_shell); /* return EXIT_FAILURE; - not reached */ } diff --git a/loginutils/sulogin.c b/loginutils/sulogin.c index 127aa1d..69d8b5e 100644 --- a/loginutils/sulogin.c +++ b/loginutils/sulogin.c @@ -89,5 +89,5 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv) shell = pwd->pw_shell; /* Exec login shell with no additional parameters. Never returns. */ - exec_shell(shell, 1, NULL); + exec_login_shell(shell); } |