diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-12-01 18:41:55 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-12-01 18:41:55 +0000 |
commit | 513720b73b403c3c9aca3f25c085422f4132c292 (patch) | |
tree | d79fe1353bbc081042673bafd494f8a90d94b227 | |
parent | 83eb4d5219f920fde59c9edd9204664f0c2f9f36 (diff) |
remove checks for "impossible" errors,
clarify uses of unoptimized sigXXX ops (they check signo),
use faster sigops where approproate.
text data bss dec hex filename
- 68 0 0 68 44 libc/signal/sighold.o
+ 63 0 0 63 3f libc/signal/sighold.o
- 114 0 0 114 72 libc/signal/sigintr.o
+ 110 0 0 110 6e libc/signal/sigintr.o
- 113 0 0 113 71 libc/signal/sigpause.o
+ 108 0 0 108 6c libc/signal/sigpause.o
- 68 0 0 68 44 libc/signal/sigrelse.o
+ 63 0 0 63 3f libc/signal/sigrelse.o
-rw-r--r-- | libc/pwd_grp/lckpwdf.c | 2 | ||||
-rw-r--r-- | libc/signal/sighold.c | 5 | ||||
-rw-r--r-- | libc/signal/sigintr.c | 7 | ||||
-rw-r--r-- | libc/signal/sigpause.c | 8 | ||||
-rw-r--r-- | libc/signal/sigrelse.c | 5 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/ssp.c | 3 |
6 files changed, 11 insertions, 19 deletions
diff --git a/libc/pwd_grp/lckpwdf.c b/libc/pwd_grp/lckpwdf.c index 41987ca5d..ff98dcb76 100644 --- a/libc/pwd_grp/lckpwdf.c +++ b/libc/pwd_grp/lckpwdf.c @@ -123,7 +123,7 @@ lckpwdf (void) /* Now make sure the alarm signal is not blocked. */ __sigemptyset (&new_set); - sigaddset (&new_set, SIGALRM); + __sigaddset (&new_set, SIGALRM); #if 1 sigprocmask (SIG_UNBLOCK, &new_set, &saved_set); #else /* never fails */ diff --git a/libc/signal/sighold.c b/libc/signal/sighold.c index f8003d60f..fde0a0c2a 100644 --- a/libc/signal/sighold.c +++ b/libc/signal/sighold.c @@ -30,10 +30,9 @@ int sighold (int sig) sigset_t set; /* Retrieve current signal set. */ - if (sigprocmask (SIG_SETMASK, NULL, &set) < 0) - return -1; + sigprocmask (SIG_SETMASK, NULL, &set); /* can't fail */ - /* Add the specified signal. */ + /* Bound-check sig, add it to the set. */ if (sigaddset (&set, sig) < 0) return -1; diff --git a/libc/signal/sigintr.c b/libc/signal/sigintr.c index 351c82b75..23f87e199 100644 --- a/libc/signal/sigintr.c +++ b/libc/signal/sigintr.c @@ -34,7 +34,7 @@ int siginterrupt (int sig, int interrupt) #ifdef SA_RESTART struct sigaction action; - if (sigaction (sig, (struct sigaction *) NULL, &action) < 0) + if (sigaction (sig, NULL, &action) < 0) return -1; if (interrupt) @@ -48,10 +48,7 @@ int siginterrupt (int sig, int interrupt) action.sa_flags |= SA_RESTART; } - if (sigaction (sig, &action, (struct sigaction *) NULL) < 0) - return -1; - - return 0; + return sigaction (sig, &action, NULL); #else __set_errno (ENOSYS); return -1; diff --git a/libc/signal/sigpause.c b/libc/signal/sigpause.c index 96dd93368..152f9ca32 100644 --- a/libc/signal/sigpause.c +++ b/libc/signal/sigpause.c @@ -40,12 +40,10 @@ int __sigpause (int sig_or_mask, int is_sig) if (is_sig) { -//TODO: error check for sig_or_mask = BIGNUM? - /* The modern X/Open implementation is requested. */ - if (sigprocmask (0, NULL, &set) < 0 - /* Yes, we call `sigdelset' and not `__sigdelset'. */ - || sigdelset (&set, sig_or_mask) < 0) + sigprocmask (SIG_BLOCK, NULL, &set); + /* Bound-check sig_or_mask, remove it from the set. */ + if (sigdelset (&set, sig_or_mask) < 0) return -1; } else diff --git a/libc/signal/sigrelse.c b/libc/signal/sigrelse.c index f5ee6fedc..1a7141ac5 100644 --- a/libc/signal/sigrelse.c +++ b/libc/signal/sigrelse.c @@ -30,10 +30,9 @@ int sigrelse (int sig) sigset_t set; /* Retrieve current signal set. */ - if (sigprocmask (SIG_SETMASK, NULL, &set) < 0) - return -1; + sigprocmask (SIG_SETMASK, NULL, &set); /* can't fail */ - /* Remove the specified signal. */ + /* Bound-check sig, remove it from the set. */ if (sigdelset (&set, sig) < 0) return -1; diff --git a/libc/sysdeps/linux/common/ssp.c b/libc/sysdeps/linux/common/ssp.c index fadf6077b..564e14d71 100644 --- a/libc/sysdeps/linux/common/ssp.c +++ b/libc/sysdeps/linux/common/ssp.c @@ -52,8 +52,7 @@ static void block_signals(void) sigset_t mask; __sigfillset(&mask); - - sigdelset(&mask, SSP_SIGTYPE); /* Block all signal handlers */ + __sigdelset(&mask, SSP_SIGTYPE); /* Block all signal handlers */ sigprocmask(SIG_BLOCK, &mask, NULL); /* except SSP_SIGTYPE */ /* Make the default handler associated with the signal handler */ |