Commit | Line | Data |
---|---|---|
b8f253e8 | 1 | /* |
8a376f64 | 2 | * Copyright (c) 1985, 1989 Regents of the University of California. |
0aaa35b3 KB |
3 | * All rights reserved. |
4 | * | |
269a7923 | 5 | * %sccs.include.redist.c% |
b8f253e8 KM |
6 | */ |
7 | ||
2ce81398 | 8 | #if defined(LIBC_SCCS) && !defined(lint) |
269a7923 | 9 | static char sccsid[] = "@(#)signal.c 5.5 (Berkeley) %G%"; |
0aaa35b3 | 10 | #endif /* LIBC_SCCS and not lint */ |
3a2dc6bc | 11 | |
ddc47039 RC |
12 | /* |
13 | * Almost backwards compatible signal. | |
ddc47039 | 14 | */ |
3a2dc6bc KM |
15 | #include <signal.h> |
16 | ||
8a376f64 MK |
17 | sigset_t _sigintr; /* shared with siginterrupt */ |
18 | ||
19 | sig_t | |
20 | signal(s, a) | |
21 | int s; | |
22 | sig_t a; | |
3a2dc6bc | 23 | { |
8a376f64 | 24 | struct sigaction sa, osa; |
ddc47039 | 25 | |
8a376f64 MK |
26 | sa.sa_handler = a; |
27 | sigemptyset(&sa.sa_mask); | |
28 | sa.sa_flags = 0; | |
29 | if (!sigismember(&_sigintr, s)) | |
30 | sa.sa_flags |= SA_RESTART; | |
31 | if (sigaction(s, &sa, &osa) < 0) | |
3a2dc6bc | 32 | return (BADSIG); |
8a376f64 | 33 | return (osa.sa_handler); |
3a2dc6bc | 34 | } |