xref: /original-bsd/lib/libc/gen/siginterrupt.c (revision 241757c4)
1 /*
2  * Copyright (c) 1985 Regents of the University of California.
3  * All rights reserved.  The Berkeley software License Agreement
4  * specifies the terms and conditions for redistribution.
5  */
6 
7 #if defined(LIBC_SCCS) && !defined(lint)
8 static char sccsid[] = "@(#)siginterrupt.c	5.2 (Berkeley) 03/09/86";
9 #endif LIBC_SCCS and not lint
10 
11 #include <signal.h>
12 
13 /*
14  * Set signal state to prevent restart of system calls
15  * after an instance of the indicated signal.
16  */
17 siginterrupt(sig, flag)
18 	int sig, flag;
19 {
20 	struct sigvec sv;
21 	int ret;
22 
23 	if ((ret = sigvec(sig, 0, &sv)) < 0)
24 		return (ret);
25 	if (flag)
26 		sv.sv_flags |= SV_INTERRUPT;
27 	else
28 		sv.sv_flags &= ~SV_INTERRUPT;
29 	return (sigvec(sig, &sv, 0));
30 }
31