xref: /original-bsd/lib/libc/compat-43/sigcompat.c (revision be9b6604)
171b3630eSkarels /*
2*be9b6604Sbostic  * Copyright (c) 1989, 1993
3*be9b6604Sbostic  *	The Regents of the University of California.  All rights reserved.
471b3630eSkarels  *
5a427e297Sbostic  * %sccs.include.redist.c%
671b3630eSkarels  */
771b3630eSkarels 
871b3630eSkarels #if defined(LIBC_SCCS) && !defined(lint)
9*be9b6604Sbostic static char sccsid[] = "@(#)sigcompat.c	8.1 (Berkeley) 06/02/93";
1071b3630eSkarels #endif /* LIBC_SCCS and not lint */
1171b3630eSkarels 
1271b3630eSkarels #include <sys/param.h>
135c0c950fSbostic #include <signal.h>
1471b3630eSkarels 
sigvec(signo,sv,osv)1571b3630eSkarels sigvec(signo, sv, osv)
1671b3630eSkarels 	int signo;
1771b3630eSkarels 	struct sigvec *sv, *osv;
1871b3630eSkarels {
1971b3630eSkarels 	int ret;
2071b3630eSkarels 
2171b3630eSkarels 	if (sv)
2271b3630eSkarels 		sv->sv_flags ^= SV_INTERRUPT;	/* !SA_INTERRUPT */
2371b3630eSkarels 	ret = sigaction(signo, (struct sigaction *)sv, (struct sigaction *)osv);
2471b3630eSkarels 	if (ret == 0 && osv)
2571b3630eSkarels 		osv->sv_flags ^= SV_INTERRUPT;	/* !SA_INTERRUPT */
2671b3630eSkarels 	return (ret);
2771b3630eSkarels }
2871b3630eSkarels 
sigsetmask(mask)2971b3630eSkarels sigsetmask(mask)
3071b3630eSkarels 	int mask;
3171b3630eSkarels {
3271b3630eSkarels 	int omask, n;
3371b3630eSkarels 
3471b3630eSkarels 	n = sigprocmask(SIG_SETMASK, (sigset_t *) &mask, (sigset_t *) &omask);
3571b3630eSkarels 	if (n)
3671b3630eSkarels 		return (n);
3771b3630eSkarels 	return (omask);
3871b3630eSkarels }
3971b3630eSkarels 
sigblock(mask)4071b3630eSkarels sigblock(mask)
4171b3630eSkarels 	int mask;
4271b3630eSkarels {
4371b3630eSkarels 	int omask, n;
4471b3630eSkarels 
4571b3630eSkarels 	n = sigprocmask(SIG_BLOCK, (sigset_t *) &mask, (sigset_t *) &omask);
4671b3630eSkarels 	if (n)
4771b3630eSkarels 		return (n);
4871b3630eSkarels 	return (omask);
4971b3630eSkarels }
5071b3630eSkarels 
sigpause(mask)5171b3630eSkarels sigpause(mask)
5271b3630eSkarels 	int mask;
5371b3630eSkarels {
5471b3630eSkarels 	return (sigsuspend((sigset_t *)&mask));
5571b3630eSkarels }
56