last rewrite in rfc822parse.c
[apps/madmutt.git] / system.c
index f5674fd..2d96430 100644 (file)
--- a/system.c
+++ b/system.c
@@ -1,31 +1,20 @@
 /*
+ * Copyright notice from original mutt:
  * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
- * 
- *     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 <errno.h>
-#endif
+#include <imap/imap.h>
 
+#include <errno.h>
 #include <stdlib.h>
 #include <signal.h>
 #include <string.h>
@@ -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);