]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
(do_system): Minor optimizations. Remove unnecessary code.
authorUlrich Drepper <drepper@redhat.com>
Sat, 4 Jan 2003 22:37:17 +0000 (22:37 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 4 Jan 2003 22:37:17 +0000 (22:37 +0000)
sysdeps/posix/system.c

index fddb4f08ac813a0bc034928b7f0447f189821c21..b1c826e4bc00adbbcd75a7e1bd367cc1341e6657 100644 (file)
@@ -64,9 +64,7 @@ do_system (const char *line)
 #ifndef _LIBC_REENTRANT
   struct sigaction intr, quit;
 #endif
-#ifndef WAITPID_CANNOT_BLOCK_SIGCHLD
-  sigset_t block, omask;
-#endif
+  sigset_t omask;
 
   sa.sa_handler = SIG_IGN;
   sa.sa_flags = 0;
@@ -78,8 +76,7 @@ do_system (const char *line)
       if (__sigaction (SIGINT, &sa, &intr) < 0)
        {
          SUB_REF ();
-         DO_UNLOCK ();
-         return -1;
+         goto out;
        }
       if (__sigaction (SIGQUIT, &sa, &quit) < 0)
        {
@@ -90,25 +87,28 @@ do_system (const char *line)
     }
   DO_UNLOCK ();
 
-  __sigemptyset (&block);
-  __sigaddset (&block, SIGCHLD);
+  /* We reuse the bitmap in the 'sa' structure.  */
+  __sigaddset (&sa.sa_mask, SIGCHLD);
   save = errno;
-  if (__sigprocmask (SIG_BLOCK, &block, &omask) < 0)
+  if (__sigprocmask (SIG_BLOCK, &sa.sa_mask, &omask) < 0)
     {
+#ifndef _LIBC
       if (errno == ENOSYS)
        __set_errno (save);
       else
+#endif
        {
-         save = errno;
          DO_LOCK ();
          if (SUB_REF () == 0)
            {
+             save = errno;
              (void) __sigaction (SIGQUIT, &quit, (struct sigaction *) NULL);
            out_restore_sigint:
              (void) __sigaction (SIGINT, &intr, (struct sigaction *) NULL);
+             __set_errno (save);
            }
+       out:
          DO_UNLOCK ();
-         __set_errno (save);
          return -1;
        }
     }