From: Ulrich Drepper Date: Sat, 4 Jan 2003 22:37:17 +0000 (+0000) Subject: (do_system): Minor optimizations. Remove unnecessary code. X-Git-Tag: cvs/glibc-2_3_2~377 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=71302f5f86f2cc6d7b57eb51e5830db2d2497fe4;p=thirdparty%2Fglibc.git (do_system): Minor optimizations. Remove unnecessary code. --- diff --git a/sysdeps/posix/system.c b/sysdeps/posix/system.c index fddb4f08ac8..b1c826e4bc0 100644 --- a/sysdeps/posix/system.c +++ b/sysdeps/posix/system.c @@ -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; } }