From 29ccb30ff6d3bae5667cd0fe9244d26849cc02f5 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 17 Nov 2014 23:17:19 +0100 Subject: [PATCH] spawn: another cleanups in spawn_and_give_stdout() --- src/spawn.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/spawn.c b/src/spawn.c index 7236a336..69fcc7f5 100644 --- a/src/spawn.c +++ b/src/spawn.c @@ -340,11 +340,6 @@ spawn_and_give_stdout(const char *prog, char *argv[], int *rd, int redir_stderr) close(fd[0]); dup2(fd[1], 1); close(fd[1]); - if (redir_stderr) - dup2(spawn_pipe_error.wr, 2); - - for (f = 3; f < maxfd; f++) - close(f); f = open("/dev/null", O_RDWR); if(f == -1) { @@ -354,12 +349,14 @@ spawn_and_give_stdout(const char *prog, char *argv[], int *rd, int redir_stderr) } dup2(f, 0); - if (!redir_stderr) - dup2(f, 2); + dup2(redir_stderr ? spawn_pipe_error.wr : f, 2); close(f); spawn_info("Executing \"%s\"\n", prog); + for (f = 3; f < maxfd; f++) + close(f); + execve(prog, argv, environ); spawn_error("pid %d cannot execute %s -- %s\n", getpid(), prog, strerror(errno));