masqmail
diff src/child.c @ 10:26e34ae9a3e3
changed indention and line wrapping to a more consistent style
author | meillo@marmaro.de |
---|---|
date | Mon, 27 Oct 2008 16:23:10 +0100 |
parents | 08114f7dcc23 |
children | 98cda87105a7 |
line diff
1.1 --- a/src/child.c Mon Oct 27 16:21:27 2008 +0100 1.2 +++ b/src/child.c Mon Oct 27 16:23:10 2008 +0100 1.3 @@ -4,7 +4,7 @@ 1.4 * it under the terms of the GNU General Public License as published by 1.5 * the Free Software Foundation; either version 2 of the License, or 1.6 * (at your option) any later version. 1.7 - * 1.8 + * 1.9 * This program is distributed in the hope that it will be useful, 1.10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 1.11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1.12 @@ -29,51 +29,51 @@ 1.13 1.14 int volatile sigchild_seen = 0; 1.15 1.16 -static 1.17 -void sigchild_handler(int sig) 1.18 +static void 1.19 +sigchild_handler(int sig) 1.20 { 1.21 - sigchild_seen = 1; 1.22 - signal(SIGHUP, sigchild_handler); 1.23 + sigchild_seen = 1; 1.24 + signal(SIGHUP, sigchild_handler); 1.25 } 1.26 1.27 -int child(const char *command) 1.28 +int 1.29 +child(const char *command) 1.30 { 1.31 - int pipe[2]; 1.32 + int pipe[2]; 1.33 1.34 - if (socketpair(AF_UNIX, SOCK_STREAM, 0, pipe) == 0){ 1.35 - pid_t pid; 1.36 - 1.37 - /* 1.38 - sigchild_seen = 0; 1.39 - signal(SIGCHLD, sigchild_handler); 1.40 - */ 1.41 + if (socketpair(AF_UNIX, SOCK_STREAM, 0, pipe) == 0) { 1.42 + pid_t pid; 1.43 1.44 - pid = fork(); 1.45 - if(pid == 0){ 1.46 - int i, max_fd = sysconf(_SC_OPEN_MAX); 1.47 - /* child */ 1.48 - dup2(pipe[0], 0); 1.49 - dup2(pipe[0], 1); 1.50 - dup2(pipe[0], 2); 1.51 + /* 1.52 + sigchild_seen = 0; 1.53 + signal(SIGCHLD, sigchild_handler); 1.54 + */ 1.55 1.56 - if(max_fd <= 0) max_fd = 64; 1.57 - for(i = 3; i < max_fd; i++) 1.58 - close(i); 1.59 + pid = fork(); 1.60 + if (pid == 0) { 1.61 + int i, max_fd = sysconf(_SC_OPEN_MAX); 1.62 + /* child */ 1.63 + dup2(pipe[0], 0); 1.64 + dup2(pipe[0], 1); 1.65 + dup2(pipe[0], 2); 1.66 1.67 - { 1.68 - char *argv [] = { "/bin/sh", "-c", (char*) command, NULL }; 1.69 - execve (*argv, argv, NULL); 1.70 - } 1.71 - logwrite(LOG_ALERT, "execve failed: %s\n", strerror(errno)); 1.72 - _exit(EXIT_FAILURE); 1.73 - }else if(pid == -1){ 1.74 - return -1; 1.75 - }else{ 1.76 - close(pipe[0]); 1.77 - return pipe[1]; 1.78 - } 1.79 - } 1.80 - return -2; 1.81 + if (max_fd <= 0) 1.82 + max_fd = 64; 1.83 + for (i = 3; i < max_fd; i++) 1.84 + close(i); 1.85 + 1.86 + { 1.87 + char *argv[] = { "/bin/sh", "-c", (char *) command, NULL }; 1.88 + execve(*argv, argv, NULL); 1.89 + } 1.90 + logwrite(LOG_ALERT, "execve failed: %s\n", strerror(errno)); 1.91 + _exit(EXIT_FAILURE); 1.92 + } else if (pid == -1) { 1.93 + return -1; 1.94 + } else { 1.95 + close(pipe[0]); 1.96 + return pipe[1]; 1.97 + } 1.98 + } 1.99 + return -2; 1.100 } 1.101 - 1.102 -