nsenter,unshare: share common code; fix a bug of not closing all fds
function old new delta xvfork_parent_waits_and_exits - 64 +64 exec_prog_or_SHELL - 39 +39 unshare_main 873 810 -63 nsenter_main 663 596 -67 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 0/2 up/down: 106/-130) Total: -27 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
c87e81f944
commit
8220399173
5 changed files with 38 additions and 35 deletions
|
@ -83,10 +83,19 @@ int FAST_FUNC BB_EXECVP(const char *file, char *const argv[])
|
|||
}
|
||||
#endif
|
||||
|
||||
int FAST_FUNC BB_EXECVP_or_die(char **argv)
|
||||
void FAST_FUNC BB_EXECVP_or_die(char **argv)
|
||||
{
|
||||
BB_EXECVP(argv[0], argv);
|
||||
/* SUSv3-mandated exit codes */
|
||||
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, NULL);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue