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[] = "@(#)signal.c 5.2 (Berkeley) 3/9/86";
9: #endif LIBC_SCCS and not lint
10:
11: /*
12: * Almost backwards compatible signal.
13: */
14: #include <signal.h>
15:
16: int (*
17: signal(s, a))()
18: int s, (*a)();
19: {
20: struct sigvec osv, sv;
21: static int mask[NSIG];
22: static int flags[NSIG];
23:
24: sv.sv_handler = a;
25: sv.sv_mask = mask[s];
26: sv.sv_flags = flags[s];
27: if (sigvec(s, &sv, &osv) < 0)
28: return (BADSIG);
29: if (sv.sv_mask != osv.sv_mask || sv.sv_flags != osv.sv_flags) {
30: mask[s] = sv.sv_mask = osv.sv_mask;
31: flags[s] = sv.sv_flags = osv.sv_flags;
32: if (sigvec(s, &sv, 0) < 0)
33: return (BADSIG);
34: }
35: return (osv.sv_handler);
36: }
Defined variables
s
defined in line
18; used 7 times
sccsid
defined in line
8;
never used