diff options
| author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-01 16:09:07 +0000 |
|---|---|---|
| committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-01 16:09:07 +0000 |
| commit | fa0b56db76e5c4c5a375930fad358ea5a364d328 (patch) | |
| tree | 58860badefa488707ba635ef4a3f7c682ddb8163 | |
| parent | 82604e973085f91f1b99cacea08963d0d1468084 (diff) | |
| download | busybox-w32-fa0b56db76e5c4c5a375930fad358ea5a364d328.tar.gz busybox-w32-fa0b56db76e5c4c5a375930fad358ea5a364d328.tar.bz2 busybox-w32-fa0b56db76e5c4c5a375930fad358ea5a364d328.zip | |
sendmail: fix wrong vfork usage here too
*: shorten error texts
function old new delta
launch_helper - 151 +151
vfork_or_die 20 - -20
sendgetmail_main 1946 1848 -98
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/1 up/down: 151/-118) Total: 33 bytes
| -rw-r--r-- | archival/libunarchive/open_transformer.c | 4 | ||||
| -rw-r--r-- | archival/tar.c | 2 | ||||
| -rw-r--r-- | miscutils/time.c | 2 | ||||
| -rw-r--r-- | networking/nc.c | 9 | ||||
| -rw-r--r-- | networking/sendmail.c | 13 | ||||
| -rw-r--r-- | shell/ash.c | 2 |
6 files changed, 11 insertions, 21 deletions
diff --git a/archival/libunarchive/open_transformer.c b/archival/libunarchive/open_transformer.c index a6bc62321..a5ee97167 100644 --- a/archival/libunarchive/open_transformer.c +++ b/archival/libunarchive/open_transformer.c | |||
| @@ -23,11 +23,11 @@ int FAST_FUNC open_transformer(int src_fd, | |||
| 23 | #if BB_MMU | 23 | #if BB_MMU |
| 24 | pid = fork(); | 24 | pid = fork(); |
| 25 | if (pid == -1) | 25 | if (pid == -1) |
| 26 | bb_perror_msg_and_die("can't fork"); | 26 | bb_perror_msg_and_die("vfork" + 1); |
| 27 | #else | 27 | #else |
| 28 | pid = vfork(); | 28 | pid = vfork(); |
| 29 | if (pid == -1) | 29 | if (pid == -1) |
| 30 | bb_perror_msg_and_die("can't vfork"); | 30 | bb_perror_msg_and_die("vfork"); |
| 31 | #endif | 31 | #endif |
| 32 | 32 | ||
| 33 | if (pid == 0) { | 33 | if (pid == 0) { |
diff --git a/archival/tar.c b/archival/tar.c index 526edb69d..bb8920ab2 100644 --- a/archival/tar.c +++ b/archival/tar.c | |||
| @@ -538,7 +538,7 @@ static void NOINLINE vfork_compressor(int tar_fd, int gzip) | |||
| 538 | 538 | ||
| 539 | gzipPid = vfork(); | 539 | gzipPid = vfork(); |
| 540 | if (gzipPid < 0) | 540 | if (gzipPid < 0) |
| 541 | bb_perror_msg_and_die("can't vfork"); | 541 | bb_perror_msg_and_die("vfork"); |
| 542 | 542 | ||
| 543 | if (gzipPid == 0) { | 543 | if (gzipPid == 0) { |
| 544 | /* child */ | 544 | /* child */ |
diff --git a/miscutils/time.c b/miscutils/time.c index a6d158c53..cce7d5b3e 100644 --- a/miscutils/time.c +++ b/miscutils/time.c | |||
| @@ -374,7 +374,7 @@ static void run_command(char *const *cmd, resource_t *resp) | |||
| 374 | resp->elapsed_ms = monotonic_us() / 1000; | 374 | resp->elapsed_ms = monotonic_us() / 1000; |
| 375 | pid = vfork(); /* Run CMD as child process. */ | 375 | pid = vfork(); /* Run CMD as child process. */ |
| 376 | if (pid < 0) | 376 | if (pid < 0) |
| 377 | bb_error_msg_and_die("cannot fork"); | 377 | bb_perror_msg_and_die("fork"); |
| 378 | if (pid == 0) { /* If child. */ | 378 | if (pid == 0) { /* If child. */ |
| 379 | /* Don't cast execvp arguments; that causes errors on some systems, | 379 | /* Don't cast execvp arguments; that causes errors on some systems, |
| 380 | versus merely warnings if the cast is left off. */ | 380 | versus merely warnings if the cast is left off. */ |
diff --git a/networking/nc.c b/networking/nc.c index 27c58a8c8..2fd42d5f6 100644 --- a/networking/nc.c +++ b/networking/nc.c | |||
| @@ -150,12 +150,9 @@ int nc_main(int argc, char **argv) | |||
| 150 | goto accept_again; | 150 | goto accept_again; |
| 151 | } | 151 | } |
| 152 | /* child (or main thread if no multiple -l) */ | 152 | /* child (or main thread if no multiple -l) */ |
| 153 | if (cfd) { | 153 | xmove_fd(cfd, 0); |
| 154 | dup2(cfd, 0); | 154 | xdup2(0, 1); |
| 155 | close(cfd); | 155 | xdup2(0, 2); |
| 156 | } | ||
| 157 | dup2(0, 1); | ||
| 158 | dup2(0, 2); | ||
| 159 | USE_NC_EXTRA(BB_EXECVP(execparam[0], execparam);) | 156 | USE_NC_EXTRA(BB_EXECVP(execparam[0], execparam);) |
| 160 | /* Don't print stuff or it will go over the wire.... */ | 157 | /* Don't print stuff or it will go over the wire.... */ |
| 161 | _exit(127); | 158 | _exit(127); |
diff --git a/networking/sendmail.c b/networking/sendmail.c index 1c23ca290..b58055d39 100644 --- a/networking/sendmail.c +++ b/networking/sendmail.c | |||
| @@ -120,15 +120,6 @@ static void signal_handler(int signo) | |||
| 120 | #undef err | 120 | #undef err |
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | /* libbb candidate */ | ||
| 124 | static pid_t vfork_or_die(void) | ||
| 125 | { | ||
| 126 | pid_t pid = vfork(); | ||
| 127 | if (pid < 0) | ||
| 128 | bb_perror_msg_and_die("vfork"); | ||
| 129 | return pid; | ||
| 130 | } | ||
| 131 | |||
| 132 | static void launch_helper(const char **argv) | 123 | static void launch_helper(const char **argv) |
| 133 | { | 124 | { |
| 134 | // setup vanilla unidirectional pipes interchange | 125 | // setup vanilla unidirectional pipes interchange |
| @@ -137,7 +128,9 @@ static void launch_helper(const char **argv) | |||
| 137 | 128 | ||
| 138 | xpipe(pipes); | 129 | xpipe(pipes); |
| 139 | xpipe(pipes+2); | 130 | xpipe(pipes+2); |
| 140 | helper_pid = vfork_or_die(); | 131 | helper_pid = vfork(); |
| 132 | if (helper_pid < 0) | ||
| 133 | bb_perror_msg_and_die("vfork"); | ||
| 141 | idx = (!helper_pid) * 2; | 134 | idx = (!helper_pid) * 2; |
| 142 | xdup2(pipes[idx], STDIN_FILENO); | 135 | xdup2(pipes[idx], STDIN_FILENO); |
| 143 | xdup2(pipes[3-idx], STDOUT_FILENO); | 136 | xdup2(pipes[3-idx], STDOUT_FILENO); |
diff --git a/shell/ash.c b/shell/ash.c index 85064d5af..58bfc5278 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
| @@ -4581,7 +4581,7 @@ forkshell(struct job *jp, union node *n, int mode) | |||
| 4581 | TRACE(("Fork failed, errno=%d", errno)); | 4581 | TRACE(("Fork failed, errno=%d", errno)); |
| 4582 | if (jp) | 4582 | if (jp) |
| 4583 | freejob(jp); | 4583 | freejob(jp); |
| 4584 | ash_msg_and_raise_error("cannot fork"); | 4584 | ash_msg_and_raise_error("can't fork"); |
| 4585 | } | 4585 | } |
| 4586 | if (pid == 0) | 4586 | if (pid == 0) |
| 4587 | forkchild(jp, /*n,*/ mode); | 4587 | forkchild(jp, /*n,*/ mode); |
