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 /networking | |
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
Diffstat (limited to 'networking')
-rw-r--r-- | networking/nc.c | 9 | ||||
-rw-r--r-- | networking/sendmail.c | 13 |
2 files changed, 6 insertions, 16 deletions
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); |