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); |