xref: /csrg-svn/lib/libc/gen/siginterrupt.c (revision 22110)
1*22110Smckusick /*
2*22110Smckusick  * Copyright (c) 1985 Regents of the University of California.
3*22110Smckusick  * All rights reserved.  The Berkeley software License Agreement
4*22110Smckusick  * specifies the terms and conditions for redistribution.
5*22110Smckusick  */
618295Smckusick 
7*22110Smckusick #ifndef lint
8*22110Smckusick static char sccsid[] = "@(#)siginterrupt.c	5.1 (Berkeley) 06/05/85";
9*22110Smckusick #endif not lint
10*22110Smckusick 
1118295Smckusick #include <signal.h>
1218295Smckusick 
1318295Smckusick /*
1418295Smckusick  * Set signal state to prevent restart of system calls
1518295Smckusick  * after an instance of the indicated signal.
1618295Smckusick  */
1718295Smckusick siginterrupt(sig, flag)
1818295Smckusick 	int sig, flag;
1918295Smckusick {
2018295Smckusick 	struct sigvec sv;
2118295Smckusick 	int ret;
2218295Smckusick 
2318295Smckusick 	if ((ret = sigvec(sig, 0, &sv)) < 0)
2418295Smckusick 		return (ret);
2518295Smckusick 	if (flag)
2618295Smckusick 		sv.sv_flags |= SV_INTERRUPT;
2718295Smckusick 	else
2818295Smckusick 		sv.sv_flags &= ~SV_INTERRUPT;
2918295Smckusick 	return (sigvec(sig, &sv, 0));
3018295Smckusick }
31