fix _NSIG usage

This commit is contained in:
David van Moolenbroek
2009-11-28 13:20:50 +00:00
parent c6cce1823d
commit 6da61b8f05
10 changed files with 19 additions and 19 deletions

View File

@@ -15,7 +15,7 @@ pid_t _getpid(void);
int
raise(int sig)
{
if (sig < 0 || sig > _NSIG)
if (sig < 0 || sig >= _NSIG)
return -1;
return _kill(_getpid(), sig);
}

View File

@@ -11,7 +11,7 @@ sighandler_t disp; /* signal handler, or SIG_DFL, or SIG_IGN */
{
struct sigaction sa, osa;
if (sig <= 0 || sig > _NSIG || sig == SIGKILL) {
if (sig <= 0 || sig >= _NSIG || sig == SIGKILL) {
errno = EINVAL;
return(SIG_ERR);
}

View File

@@ -2,6 +2,8 @@
/* System processes use simpler macros with no range error checking (defined in
* signal.h). The ANSI signal() implementation now also uses the macro
* versions, which makes hiding of the functions here a historical remains.
*
* _NSIG is supposed to be the highest signal number plus one.
*/
#define sigaddset _sigaddset
#define sigdelset _sigdelset
@@ -13,10 +15,10 @@
/* Low bit of signal masks. */
#define SIGBIT_0 ((sigset_t) 1)
/* Mask of valid signals (0 - _NSIG). */
#define SIGMASK (((SIGBIT_0 << _NSIG) << 1) - 1)
/* Mask of valid signals (0 - (_NSIG-1)). */
#define SIGMASK ((SIGBIT_0 << _NSIG) - 1)
#define sigisvalid(signo) ((unsigned) (signo) <= _NSIG)
#define sigisvalid(signo) ((unsigned) (signo) < _NSIG)
PUBLIC int sigaddset(set, signo)
sigset_t *set;