Mercurial > masqmail
diff src/child.c @ 401:885e3d886199
Various minor refactoring.
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Tue, 21 Feb 2012 16:11:00 +0100 |
parents | 0ca270ca11fa |
children |
line wrap: on
line diff
--- a/src/child.c Tue Feb 21 15:44:55 2012 +0100 +++ b/src/child.c Tue Feb 21 16:11:00 2012 +0100 @@ -41,26 +41,28 @@ pid = fork(); if (pid == -1) { return -1; + } else if (pid == 0) { /* child */ + char *argv[] = { "/bin/sh", "-c", (char *)command, + NULL }; int i, max_fd = sysconf(_SC_OPEN_MAX); + dup2(pipe[0], 0); dup2(pipe[0], 1); dup2(pipe[0], 2); - if (max_fd <= 0) + if (max_fd <= 0) { max_fd = 64; - for (i = 3; i < max_fd; i++) + } + for (i = 3; i < max_fd; i++) { close(i); - - { - char *argv[] = { "/bin/sh", "-c", - (char *) command, NULL }; - execve(*argv, argv, NULL); } + execve(*argv, argv, NULL); logwrite(LOG_ALERT, "execve failed: %s\n", strerror(errno)); _exit(1); + } else { /* parent */ close(pipe[0]);