xref: /original-bsd/lib/libc/compat-43/sigcompat.c (revision c3e32dec)
1 /*
2  * Copyright (c) 1989, 1993
3  *	The Regents of the University of California.  All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  */
7 
8 #if defined(LIBC_SCCS) && !defined(lint)
9 static char sccsid[] = "@(#)sigcompat.c	8.1 (Berkeley) 06/02/93";
10 #endif /* LIBC_SCCS and not lint */
11 
12 #include <sys/param.h>
13 #include <signal.h>
14 
15 sigvec(signo, sv, osv)
16 	int signo;
17 	struct sigvec *sv, *osv;
18 {
19 	int ret;
20 
21 	if (sv)
22 		sv->sv_flags ^= SV_INTERRUPT;	/* !SA_INTERRUPT */
23 	ret = sigaction(signo, (struct sigaction *)sv, (struct sigaction *)osv);
24 	if (ret == 0 && osv)
25 		osv->sv_flags ^= SV_INTERRUPT;	/* !SA_INTERRUPT */
26 	return (ret);
27 }
28 
29 sigsetmask(mask)
30 	int mask;
31 {
32 	int omask, n;
33 
34 	n = sigprocmask(SIG_SETMASK, (sigset_t *) &mask, (sigset_t *) &omask);
35 	if (n)
36 		return (n);
37 	return (omask);
38 }
39 
40 sigblock(mask)
41 	int mask;
42 {
43 	int omask, n;
44 
45 	n = sigprocmask(SIG_BLOCK, (sigset_t *) &mask, (sigset_t *) &omask);
46 	if (n)
47 		return (n);
48 	return (omask);
49 }
50 
51 sigpause(mask)
52 	int mask;
53 {
54 	return (sigsuspend((sigset_t *)&mask));
55 }
56