xref: /csrg-svn/lib/libc/compat-43/sigcompat.c (revision 60986)
138792Skarels /*
2*60986Sbostic  * Copyright (c) 1989, 1993
3*60986Sbostic  *	The Regents of the University of California.  All rights reserved.
438792Skarels  *
542619Sbostic  * %sccs.include.redist.c%
638792Skarels  */
738792Skarels 
838792Skarels #if defined(LIBC_SCCS) && !defined(lint)
9*60986Sbostic static char sccsid[] = "@(#)sigcompat.c	8.1 (Berkeley) 06/02/93";
1038792Skarels #endif /* LIBC_SCCS and not lint */
1138792Skarels 
1238792Skarels #include <sys/param.h>
1346600Sbostic #include <signal.h>
1438792Skarels 
sigvec(signo,sv,osv)1538792Skarels sigvec(signo, sv, osv)
1638792Skarels 	int signo;
1738792Skarels 	struct sigvec *sv, *osv;
1838792Skarels {
1938792Skarels 	int ret;
2038792Skarels 
2138792Skarels 	if (sv)
2238792Skarels 		sv->sv_flags ^= SV_INTERRUPT;	/* !SA_INTERRUPT */
2338792Skarels 	ret = sigaction(signo, (struct sigaction *)sv, (struct sigaction *)osv);
2438792Skarels 	if (ret == 0 && osv)
2538792Skarels 		osv->sv_flags ^= SV_INTERRUPT;	/* !SA_INTERRUPT */
2638792Skarels 	return (ret);
2738792Skarels }
2838792Skarels 
sigsetmask(mask)2938792Skarels sigsetmask(mask)
3038792Skarels 	int mask;
3138792Skarels {
3238792Skarels 	int omask, n;
3338792Skarels 
3438792Skarels 	n = sigprocmask(SIG_SETMASK, (sigset_t *) &mask, (sigset_t *) &omask);
3538792Skarels 	if (n)
3638792Skarels 		return (n);
3738792Skarels 	return (omask);
3838792Skarels }
3938792Skarels 
sigblock(mask)4038792Skarels sigblock(mask)
4138792Skarels 	int mask;
4238792Skarels {
4338792Skarels 	int omask, n;
4438792Skarels 
4538792Skarels 	n = sigprocmask(SIG_BLOCK, (sigset_t *) &mask, (sigset_t *) &omask);
4638792Skarels 	if (n)
4738792Skarels 		return (n);
4838792Skarels 	return (omask);
4938792Skarels }
5038792Skarels 
sigpause(mask)5138792Skarels sigpause(mask)
5238792Skarels 	int mask;
5338792Skarels {
5438792Skarels 	return (sigsuspend((sigset_t *)&mask));
5538792Skarels }
56