summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libbb.h1
-rw-r--r--libbb/run_shell.c9
-rw-r--r--loginutils/login.c2
-rw-r--r--loginutils/sulogin.c2
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);
}