diff options
author | Roland McGrath <roland@gnu.org> | 2002-08-27 02:43:22 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2002-08-27 02:43:22 +0000 |
commit | b5d482d00ef8bc29f0b4dd84812d52759ebdd630 (patch) | |
tree | 95299ffce18eb88410cc0d49cc898a9fd40cc302 /sysdeps/posix/sigsetmask.c | |
parent | 20acbc25428bb7c9a78de37236285a09108da313 (diff) | |
download | glibc-b5d482d00ef8bc29f0b4dd84812d52759ebdd630.tar.gz glibc-b5d482d00ef8bc29f0b4dd84812d52759ebdd630.tar.xz glibc-b5d482d00ef8bc29f0b4dd84812d52759ebdd630.zip |
* sysdeps/generic/sigset-cvt-mask.h (sigset_set_old_mask): Replace
macro with inline function. (sigset_get_old_mask): Likewise. * sysdeps/posix/sigblock.c (__sigblock): Update callers. * sysdeps/posix/sigsetmask.c (__sigsetmask): Likewise. * sysdeps/posix/sigpause.c (__sigpause): Likewise. * sysdeps/posix/sigvec.c (__sigvec, sigvec_wrapper_handler): Likewise. * sysdeps/unix/sysv/aix/sigset-cvt-mask.h (sigset_set_old_mask, sigset_get_old_mask): Make these macros return values. * sysdeps/unix/sysv/linux/sigset-cvt-mask.h: Likewise. * sysdeps/unix/sysv/sysv4/sigset-cvt-mask.h: Likewise. 2002-07-06 Bruno Haible <bruno@clisp.org> * sysdeps/generic/sigset-cvt-mask.h (sigset_set_old_mask, sigset_get_old_mask): Make it work with larger sigset_t. * sysdeps/posix/sigblock.c (__sigblock): Use those macros. * sysdeps/posix/sigsetmask.c (__sigsetmask): Likewise. * sysdeps/posix/sigpause.c (__sigpause): Likewise. 2002-08-26 Roland McGrath <roland@redhat.com>
Diffstat (limited to 'sysdeps/posix/sigsetmask.c')
-rw-r--r-- | sysdeps/posix/sigsetmask.c | 27 |
1 files changed, 5 insertions, 22 deletions
diff --git a/sysdeps/posix/sigsetmask.c b/sysdeps/posix/sigsetmask.c index 7b97a514b0..bb50e4fc10 100644 --- a/sysdeps/posix/sigsetmask.c +++ b/sysdeps/posix/sigsetmask.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,1994,1995,1996,1997,2001 Free Software Foundation, Inc. +/* Copyright (C) 1991,1994-1997,2001-2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -19,38 +19,21 @@ #include <errno.h> #include <signal.h> +#include <sigset-cvt-mask.h> + /* Set the mask of blocked signals to MASK, returning the old mask. */ int __sigsetmask (int mask) { - register unsigned int sig; sigset_t set, oset; - if (__sigemptyset (&set) < 0) + if (sigset_set_old_mask (&set, mask) < 0) return -1; - if (sizeof (mask) == sizeof (set)) - *(int *) &set = mask; - else if (sizeof (unsigned long int) == sizeof (set)) - *(unsigned long int *) &set = (unsigned int) mask; - else - for (sig = 1; sig < NSIG && sig <= sizeof (mask) * 8; ++sig) - if ((mask & sigmask (sig)) && __sigaddset (&set, sig) < 0) - return -1; - if (__sigprocmask (SIG_SETMASK, &set, &oset) < 0) return -1; - if (sizeof (mask) == sizeof (oset)) - mask = *(int *) &oset; - else if (sizeof (unsigned long int) == sizeof (oset)) - mask = *(unsigned long int *) &oset; - else - for (sig = 1, mask = 0; sig < NSIG && sig <= sizeof (mask) * 8; ++sig) - if (__sigismember (&oset, sig)) - mask |= sigmask (sig); - - return mask; + return sigset_get_old_mask (&oset); } weak_alias (__sigsetmask, sigsetmask) |