Commit | Line | Data |
---|---|---|
b8f253e8 KM |
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 | ||
2ce81398 DS |
7 | #if defined(LIBC_SCCS) && !defined(lint) |
8 | static char sccsid[] = "@(#)siginterrupt.c 5.2 (Berkeley) %G%"; | |
9 | #endif LIBC_SCCS and not lint | |
6fa13af1 KM |
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 | } |