From fa0b56db76e5c4c5a375930fad358ea5a364d328 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Tue, 1 Jul 2008 16:09:07 +0000 Subject: 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 --- networking/nc.c | 9 +++------ networking/sendmail.c | 13 +++---------- 2 files changed, 6 insertions(+), 16 deletions(-) (limited to 'networking') 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) goto accept_again; } /* child (or main thread if no multiple -l) */ - if (cfd) { - dup2(cfd, 0); - close(cfd); - } - dup2(0, 1); - dup2(0, 2); + xmove_fd(cfd, 0); + xdup2(0, 1); + xdup2(0, 2); USE_NC_EXTRA(BB_EXECVP(execparam[0], execparam);) /* Don't print stuff or it will go over the wire.... */ _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) #undef err } -/* libbb candidate */ -static pid_t vfork_or_die(void) -{ - pid_t pid = vfork(); - if (pid < 0) - bb_perror_msg_and_die("vfork"); - return pid; -} - static void launch_helper(const char **argv) { // setup vanilla unidirectional pipes interchange @@ -137,7 +128,9 @@ static void launch_helper(const char **argv) xpipe(pipes); xpipe(pipes+2); - helper_pid = vfork_or_die(); + helper_pid = vfork(); + if (helper_pid < 0) + bb_perror_msg_and_die("vfork"); idx = (!helper_pid) * 2; xdup2(pipes[idx], STDIN_FILENO); xdup2(pipes[3-idx], STDOUT_FILENO); -- cgit v1.2.3