1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-01 10:06:57 +03:00

* 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>
This commit is contained in:
Roland McGrath
2002-08-27 02:43:22 +00:00
parent 20acbc2542
commit b5d482d00e
9 changed files with 101 additions and 86 deletions

View File

@ -20,13 +20,14 @@
#include <signal.h>
#include <stddef.h> /* For NULL. */
#include <sigset-cvt-mask.h>
/* Set the mask of blocked signals to MASK,
wait for a signal to arrive, and then restore the mask. */
int
__sigpause (int sig_or_mask, int is_sig)
{
sigset_t set;
int sig;
if (is_sig != 0)
{
@ -36,20 +37,8 @@ __sigpause (int sig_or_mask, int is_sig)
|| __sigdelset (&set, sig_or_mask) < 0)
return -1;
}
else
{
if (__sigemptyset (&set) < 0)
return -1;
if (sizeof (sig_or_mask) == sizeof (set))
*(int *) &set = sig_or_mask;
else if (sizeof (unsigned long int) == sizeof (set))
*(unsigned long int *) &set = (unsigned int) sig_or_mask;
else
for (sig = 1; sig < NSIG; ++sig)
if ((sig_or_mask & sigmask (sig)) && __sigaddset (&set, sig) < 0)
return -1;
}
else if (sigset_set_old_mask (&set, sig_or_mask) < 0)
return -1;
return __sigsuspend (&set);
}