|
|
1.1 ! root 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) 3/9/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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.