*: make exec failure message more consistent
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
2b46fd49b1
commit
41ddd9f606
@ -98,7 +98,7 @@ static NOINLINE void vfork_child(char **argv)
|
|||||||
//bb_error_msg("VT's sid %d", tcgetsid(0));
|
//bb_error_msg("VT's sid %d", tcgetsid(0));
|
||||||
//bb_error_msg("VT's pgrp %d", tcgetpgrp(0));
|
//bb_error_msg("VT's pgrp %d", tcgetpgrp(0));
|
||||||
BB_EXECVP(argv[0], argv);
|
BB_EXECVP(argv[0], argv);
|
||||||
bb_perror_msg_and_die("exec %s", argv[0]);
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,6 +30,6 @@ int chroot_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
argv[1] = (char *) "-i";
|
argv[1] = (char *) "-i";
|
||||||
}
|
}
|
||||||
|
|
||||||
BB_EXECVP(*argv, argv);
|
BB_EXECVP(argv[0], argv);
|
||||||
bb_perror_msg_and_die("can't execute '%s'", *argv);
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
|
@ -76,11 +76,11 @@ int env_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
++argv;
|
++argv;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*argv) {
|
if (argv[0]) {
|
||||||
BB_EXECVP(*argv, argv);
|
BB_EXECVP(argv[0], argv);
|
||||||
/* SUSv3-mandated exit codes. */
|
/* SUSv3-mandated exit codes. */
|
||||||
xfunc_error_retval = (errno == ENOENT) ? 127 : 126;
|
xfunc_error_retval = (errno == ENOENT) ? 127 : 126;
|
||||||
bb_simple_perror_msg_and_die(*argv);
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (environ) { /* clearenv() may set environ == NULL! */
|
if (environ) { /* clearenv() may set environ == NULL! */
|
||||||
|
@ -47,9 +47,8 @@ int nice_main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BB_EXECVP(*argv, argv); /* Now exec the desired program. */
|
BB_EXECVP(argv[0], argv);
|
||||||
|
|
||||||
/* The exec failed... */
|
/* The exec failed... */
|
||||||
xfunc_error_retval = (errno == ENOENT) ? 127 : 126; /* SUSv3 */
|
xfunc_error_retval = (errno == ENOENT) ? 127 : 126; /* SUSv3 */
|
||||||
bb_simple_perror_msg_and_die(*argv);
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
|
@ -75,6 +75,7 @@ int nohup_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
|
|
||||||
signal(SIGHUP, SIG_IGN);
|
signal(SIGHUP, SIG_IGN);
|
||||||
|
|
||||||
BB_EXECVP(argv[1], argv+1);
|
argv++;
|
||||||
bb_simple_perror_msg_and_die(argv[1]);
|
BB_EXECVP(argv[0], argv);
|
||||||
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
|
@ -448,5 +448,5 @@ int start_stop_daemon_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
execvp(startas, argv);
|
execvp(startas, argv);
|
||||||
bb_perror_msg_and_die("can't start %s", startas);
|
bb_perror_msg_and_die("can't execute '%s'", startas);
|
||||||
}
|
}
|
||||||
|
@ -86,5 +86,5 @@ void FAST_FUNC run_shell(const char *shell, int loginshell, const char *command,
|
|||||||
freecon(current_sid);
|
freecon(current_sid);
|
||||||
#endif
|
#endif
|
||||||
execv(shell, (char **) args);
|
execv(shell, (char **) args);
|
||||||
bb_perror_msg_and_die("can't run '%s'", shell);
|
bb_perror_msg_and_die("can't execute '%s'", shell);
|
||||||
}
|
}
|
||||||
|
@ -249,7 +249,7 @@ void FAST_FUNC re_exec(char **argv)
|
|||||||
* "we have (already) re-execed, don't do it again" flag */
|
* "we have (already) re-execed, don't do it again" flag */
|
||||||
argv[0][0] |= 0x80;
|
argv[0][0] |= 0x80;
|
||||||
execv(bb_busybox_exec_path, argv);
|
execv(bb_busybox_exec_path, argv);
|
||||||
bb_perror_msg_and_die("exec %s", bb_busybox_exec_path);
|
bb_perror_msg_and_die("can't execute '%s'", bb_busybox_exec_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
pid_t FAST_FUNC fork_or_rexec(char **argv)
|
pid_t FAST_FUNC fork_or_rexec(char **argv)
|
||||||
|
@ -67,8 +67,8 @@ void FAST_FUNC launch_helper(const char **argv)
|
|||||||
if (!G.helper_pid) {
|
if (!G.helper_pid) {
|
||||||
// child: try to execute connection helper
|
// child: try to execute connection helper
|
||||||
// NB: SIGCHLD & SIGALRM revert to SIG_DFL on exec
|
// NB: SIGCHLD & SIGALRM revert to SIG_DFL on exec
|
||||||
BB_EXECVP(*argv, (char **)argv);
|
BB_EXECVP(argv[0], (char **)argv);
|
||||||
_exit(127);
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// parent
|
// parent
|
||||||
|
@ -288,8 +288,8 @@ static int parse(const char *boundary, char **argv)
|
|||||||
xsetenv("CHARSET", charset);
|
xsetenv("CHARSET", charset);
|
||||||
xsetenv("ENCODING", encoding);
|
xsetenv("ENCODING", encoding);
|
||||||
xsetenv("FILENAME", filename);
|
xsetenv("FILENAME", filename);
|
||||||
BB_EXECVP(*argv, argv);
|
BB_EXECVP(argv[0], argv);
|
||||||
_exit(EXIT_FAILURE);
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
// parent dumps to fd[1]
|
// parent dumps to fd[1]
|
||||||
close(fd[0]);
|
close(fd[0]);
|
||||||
|
@ -115,9 +115,9 @@ int chrt_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
if (sched_setscheduler(pid, policy, &sp) < 0)
|
if (sched_setscheduler(pid, policy, &sp) < 0)
|
||||||
bb_perror_msg_and_die("can't %cet pid %d's policy", 's', pid);
|
bb_perror_msg_and_die("can't %cet pid %d's policy", 's', pid);
|
||||||
|
|
||||||
if (!*argv) /* "-p <priority> <pid> [...]" */
|
if (!argv[0]) /* "-p <priority> <pid> [...]" */
|
||||||
goto print_rt_info;
|
goto print_rt_info;
|
||||||
|
|
||||||
BB_EXECVP(*argv, argv);
|
BB_EXECVP(argv[0], argv);
|
||||||
bb_simple_perror_msg_and_die(*argv);
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
|
@ -89,9 +89,9 @@ int ionice_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
pri |= (ioclass << IOPRIO_CLASS_SHIFT);
|
pri |= (ioclass << IOPRIO_CLASS_SHIFT);
|
||||||
if (ioprio_set(IOPRIO_WHO_PROCESS, pid, pri) == -1)
|
if (ioprio_set(IOPRIO_WHO_PROCESS, pid, pri) == -1)
|
||||||
bb_perror_msg_and_die("ioprio_%cet", 's');
|
bb_perror_msg_and_die("ioprio_%cet", 's');
|
||||||
if (*argv) {
|
if (argv[0]) {
|
||||||
BB_EXECVP(*argv, argv);
|
BB_EXECVP(argv[0], argv);
|
||||||
bb_simple_perror_msg_and_die(*argv);
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@ int setsid_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
setsid();
|
setsid();
|
||||||
}
|
}
|
||||||
|
|
||||||
BB_EXECVP(argv[1], argv + 1);
|
argv++;
|
||||||
bb_simple_perror_msg_and_die(argv[1]);
|
BB_EXECVP(argv[0], argv);
|
||||||
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
|
@ -129,9 +129,9 @@ int taskset_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
if (sched_setaffinity(pid, sizeof(mask), &mask))
|
if (sched_setaffinity(pid, sizeof(mask), &mask))
|
||||||
bb_perror_msg_and_die("can't %cet pid %d's affinity", 's', pid);
|
bb_perror_msg_and_die("can't %cet pid %d's affinity", 's', pid);
|
||||||
|
|
||||||
if (!*argv) /* "-p <aff> <pid> [...ignored...]" */
|
if (!argv[0]) /* "-p <aff> <pid> [...ignored...]" */
|
||||||
goto print_aff; /* print new affinity and exit */
|
goto print_aff; /* print new affinity and exit */
|
||||||
|
|
||||||
BB_EXECVP(*argv, argv);
|
BB_EXECVP(argv[0], argv);
|
||||||
bb_simple_perror_msg_and_die(*argv);
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
|
@ -380,7 +380,7 @@ static void run_command(char *const *cmd, resource_t *resp)
|
|||||||
versus merely warnings if the cast is left off. */
|
versus merely warnings if the cast is left off. */
|
||||||
BB_EXECVP(cmd[0], cmd);
|
BB_EXECVP(cmd[0], cmd);
|
||||||
xfunc_error_retval = (errno == ENOENT ? 127 : 126);
|
xfunc_error_retval = (errno == ENOENT ? 127 : 126);
|
||||||
bb_error_msg_and_die("can't run '%s'", cmd[0]);
|
bb_perror_msg_and_die("can't execute '%s'", cmd[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Have signals kill the child but not self (if possible). */
|
/* Have signals kill the child but not self (if possible). */
|
||||||
|
@ -111,5 +111,5 @@ int timeout_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
argv[1] = sv2;
|
argv[1] = sv2;
|
||||||
#endif
|
#endif
|
||||||
BB_EXECVP(argv[0], argv);
|
BB_EXECVP(argv[0], argv);
|
||||||
bb_perror_msg_and_die("exec '%s'", argv[0]);
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
|
@ -1474,7 +1474,7 @@ static void send_cgi_and_exit(
|
|||||||
* in the current directory */
|
* in the current directory */
|
||||||
execv(argv[0], argv);
|
execv(argv[0], argv);
|
||||||
if (verbose)
|
if (verbose)
|
||||||
bb_perror_msg("exec %s", argv[0]);
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
error_execing_cgi:
|
error_execing_cgi:
|
||||||
/* send to stdout
|
/* send to stdout
|
||||||
* (we are CGI here, our stdout is pumped to the net) */
|
* (we are CGI here, our stdout is pumped to the net) */
|
||||||
|
@ -1053,7 +1053,7 @@ static int popen2(FILE **in, FILE **out, char *command, char *param)
|
|||||||
xmove_fd(infd.rd, 0);
|
xmove_fd(infd.rd, 0);
|
||||||
xmove_fd(outfd.wr, 1);
|
xmove_fd(outfd.wr, 1);
|
||||||
BB_EXECVP(command, argv);
|
BB_EXECVP(command, argv);
|
||||||
_exit(127);
|
bb_perror_msg_and_die("can't execute '%s'", command);
|
||||||
}
|
}
|
||||||
/* parent */
|
/* parent */
|
||||||
close(infd.rd);
|
close(infd.rd);
|
||||||
|
@ -1380,7 +1380,7 @@ int inetd_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
sigaction_set(SIGPIPE, &saved_pipe_handler);
|
sigaction_set(SIGPIPE, &saved_pipe_handler);
|
||||||
restore_sigmask(&omask);
|
restore_sigmask(&omask);
|
||||||
BB_EXECVP(sep->se_program, sep->se_argv);
|
BB_EXECVP(sep->se_program, sep->se_argv);
|
||||||
bb_perror_msg("exec %s", sep->se_program);
|
bb_perror_msg_and_die("can't execute '%s'", sep->se_program);
|
||||||
do_exit1:
|
do_exit1:
|
||||||
/* eat packet in udp case */
|
/* eat packet in udp case */
|
||||||
if (sep->se_socktype != SOCK_STREAM)
|
if (sep->se_socktype != SOCK_STREAM)
|
||||||
|
@ -230,7 +230,7 @@ static int doexec(char **proggie)
|
|||||||
/* dup2(0, 2); - do we *really* want this? NO!
|
/* dup2(0, 2); - do we *really* want this? NO!
|
||||||
* exec'ed prog can do it yourself, if needed */
|
* exec'ed prog can do it yourself, if needed */
|
||||||
execvp(proggie[0], proggie);
|
execvp(proggie[0], proggie);
|
||||||
bb_perror_msg_and_die("exec");
|
bb_perror_msg_and_die("can't execute '%s'", proggie[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* connect_w_timeout:
|
/* connect_w_timeout:
|
||||||
|
@ -504,7 +504,7 @@ int tcpudpsvd_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
#else
|
#else
|
||||||
BB_EXECVP(argv[0], argv);
|
BB_EXECVP(argv[0], argv);
|
||||||
#endif
|
#endif
|
||||||
bb_perror_msg_and_die("exec '%s'", argv[0]);
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -181,8 +181,8 @@ int lpd_main(int argc UNUSED_PARAM, char *argv[])
|
|||||||
// this call reopens stdio fds to "/dev/null"
|
// this call reopens stdio fds to "/dev/null"
|
||||||
// (no daemonization is done)
|
// (no daemonization is done)
|
||||||
bb_daemonize_or_rexec(DAEMON_DEVNULL_STDIO | DAEMON_ONLY_SANITIZE, NULL);
|
bb_daemonize_or_rexec(DAEMON_DEVNULL_STDIO | DAEMON_ONLY_SANITIZE, NULL);
|
||||||
BB_EXECVP(*argv, argv);
|
BB_EXECVP(argv[0], argv);
|
||||||
exit(127);
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// validate input.
|
// validate input.
|
||||||
|
@ -383,5 +383,5 @@ int chpst_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
close(STDERR_FILENO);
|
close(STDERR_FILENO);
|
||||||
|
|
||||||
BB_EXECVP(argv[0], argv);
|
BB_EXECVP(argv[0], argv);
|
||||||
bb_perror_msg_and_die("exec %s", argv[0]);
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
|
@ -133,6 +133,5 @@ int runcon_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
context_str(con));
|
context_str(con));
|
||||||
|
|
||||||
execvp(argv[0], argv);
|
execvp(argv[0], argv);
|
||||||
|
|
||||||
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
bb_perror_msg_and_die("can't execute '%s'", argv[0]);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user