diff options
-rw-r--r-- | include/libbb.h | 4 | ||||
-rw-r--r-- | libbb/executable.c | 9 | ||||
-rw-r--r-- | libbb/run_shell.c | 13 | ||||
-rw-r--r-- | loginutils/login.c | 2 | ||||
-rw-r--r-- | loginutils/su.c | 2 | ||||
-rw-r--r-- | loginutils/sulogin.c | 2 |
6 files changed, 16 insertions, 16 deletions
diff --git a/include/libbb.h b/include/libbb.h index 9872dc1fb..c23018f17 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -1140,7 +1140,6 @@ int BB_EXECVP(const char *file, char *const argv[]) FAST_FUNC; #define BB_EXECLP(prog,cmd,...) execlp(prog,cmd,__VA_ARGS__) #endif void BB_EXECVP_or_die(char **argv) NORETURN FAST_FUNC; -void exec_prog_or_SHELL(char **argv) NORETURN FAST_FUNC; /* xvfork() can't be a _function_, return after vfork in child mangles stack * in the parent. It must be a macro. */ @@ -1607,7 +1606,8 @@ void bb_do_delay(unsigned seconds) FAST_FUNC; void msleep(unsigned ms) FAST_FUNC; void sleep1(void) FAST_FUNC; void change_identity(const struct passwd *pw) FAST_FUNC; -void run_shell(const char *shell, int loginshell, const char **args) NORETURN FAST_FUNC; +void exec_shell(const char *shell, int loginshell, const char **args) NORETURN FAST_FUNC; +void exec_prog_or_SHELL(char **argv) NORETURN FAST_FUNC; /* Returns $SHELL, getpwuid(getuid())->pw_shell, or DEFAULT_SHELL. * Note that getpwuid result might need xstrdup'ing diff --git a/libbb/executable.c b/libbb/executable.c index 29d2a2c85..a033b74d9 100644 --- a/libbb/executable.c +++ b/libbb/executable.c @@ -91,12 +91,3 @@ void FAST_FUNC BB_EXECVP_or_die(char **argv) xfunc_error_retval = (errno == ENOENT) ? 127 : 126; bb_perror_msg_and_die("can't execute '%s'", argv[0]); } - -/* 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); - } - run_shell(getenv("SHELL"), /*login:*/ 1, NULL); -} diff --git a/libbb/run_shell.c b/libbb/run_shell.c index a0420d982..c2ff69651 100644 --- a/libbb/run_shell.c +++ b/libbb/run_shell.c @@ -48,10 +48,10 @@ void FAST_FUNC set_current_security_context(security_context_t sid) #endif -/* Run SHELL, or DEFAULT_SHELL if SHELL is "" or NULL. +/* Exec SHELL, or DEFAULT_SHELL if SHELL is "" or NULL. * If ADDITIONAL_ARGS is not NULL, pass them to the shell. */ -void FAST_FUNC run_shell(const char *shell, int loginshell, const char **additional_args) +void FAST_FUNC exec_shell(const char *shell, int loginshell, const char **additional_args) { const char **args; @@ -84,3 +84,12 @@ void FAST_FUNC run_shell(const char *shell, int loginshell, const char **additio execv(shell, (char **) args); bb_perror_msg_and_die("can't execute '%s'", shell); } + +/* 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); + } + exec_shell(getenv("SHELL"), /*login:*/ 1, NULL); +} diff --git a/loginutils/login.c b/loginutils/login.c index f0bce50ce..aacd47241 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 */ - run_shell(pw->pw_shell, 1, NULL); + exec_shell(pw->pw_shell, 1, NULL); /* return EXIT_FAILURE; - not reached */ } diff --git a/loginutils/su.c b/loginutils/su.c index 6f91039f9..784a53552 100644 --- a/loginutils/su.c +++ b/loginutils/su.c @@ -204,7 +204,7 @@ int su_main(int argc UNUSED_PARAM, char **argv) */ /* Never returns */ - run_shell(opt_shell, flags & SU_OPT_l, (const char**)argv); + exec_shell(opt_shell, flags & SU_OPT_l, (const char**)argv); /* return EXIT_FAILURE; - not reached */ } diff --git a/loginutils/sulogin.c b/loginutils/sulogin.c index 48dafd186..127aa1de9 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. */ - run_shell(shell, 1, NULL); + exec_shell(shell, 1, NULL); } |