X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=system.c;h=2d964302bf1b945c210af4071a67177cda66ae91;hp=f5674fd40de6d17c38fdcd20bf2eeebdaf04beb9;hb=197d39c13fb4cc5e316ecf5b2dcf981d7d71c512;hpb=f404a0ca916be07049af51a3022baaaaab94def6 diff --git a/system.c b/system.c index f5674fd..2d96430 100644 --- a/system.c +++ b/system.c @@ -1,31 +1,20 @@ /* + * Copyright notice from original mutt: * Copyright (C) 1996-2000 Michael R. Elkins - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. - */ + * + * This file is part of mutt-ng, see http://www.muttng.org/. + * It's licensed under the GNU General Public License, + * please see the file GPL in the top level source directory. + */ #if HAVE_CONFIG_H # include "config.h" #endif #include "mutt.h" -#ifdef USE_IMAP -# include "imap.h" -# include -#endif +#include +#include #include #include #include @@ -49,14 +38,12 @@ int _mutt_system (const char *cmd, int flags) mutt_block_signals_system (); /* also don't want to be stopped right now */ - if (flags & M_DETACH_PROCESS) - { + if (flags & M_DETACH_PROCESS) { sigemptyset (&set); sigaddset (&set, SIGTSTP); sigprocmask (SIG_BLOCK, &set, NULL); } - else - { + else { act.sa_handler = SIG_DFL; /* we want to restart the waitpid() below */ #ifdef SA_RESTART @@ -67,41 +54,38 @@ int _mutt_system (const char *cmd, int flags) sigaction (SIGCONT, &act, &oldcont); } - if ((thepid = fork ()) == 0) - { + if ((thepid = fork ()) == 0) { act.sa_flags = 0; - if (flags & M_DETACH_PROCESS) - { + if (flags & M_DETACH_PROCESS) { int fd; /* give up controlling terminal */ setsid (); - switch (fork ()) - { - case 0: + switch (fork ()) { + case 0: #if defined(OPEN_MAX) - for (fd = 0; fd < OPEN_MAX; fd++) - close (fd); + for (fd = 0; fd < OPEN_MAX; fd++) + close (fd); #elif defined(_POSIX_OPEN_MAX) - for (fd = 0; fd < _POSIX_OPEN_MAX; fd++) - close (fd); + for (fd = 0; fd < _POSIX_OPEN_MAX; fd++) + close (fd); #else - close (0); - close (1); - close (2); + close (0); + close (1); + close (2); #endif - chdir ("/"); - act.sa_handler = SIG_DFL; - sigaction (SIGCHLD, &act, NULL); - break; + chdir ("/"); + act.sa_handler = SIG_DFL; + sigaction (SIGCHLD, &act, NULL); + break; - case -1: - _exit (127); + case -1: + _exit (127); - default: - _exit (0); + default: + _exit (0); } } @@ -114,17 +98,11 @@ int _mutt_system (const char *cmd, int flags) sigaction (SIGTSTP, &act, NULL); sigaction (SIGCONT, &act, NULL); - execl (EXECSHELL, "sh", "-c", cmd, NULL); - _exit (127); /* execl error */ + execl ("/bin/sh", "sh", "-c", cmd, NULL); + _exit (127); /* execl error */ } - else if (thepid != -1) - { -#ifndef USE_IMAP - /* wait for the (first) child process to finish */ - waitpid (thepid, &rc, 0); -#else + else if (thepid != -1) { rc = imap_wait_keepalive (thepid); -#endif } sigaction (SIGCONT, &oldcont, NULL);