aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/csplit
diff options
context:
space:
mode:
authorTim J. Robbins <tjr@FreeBSD.org>2002-07-26 05:25:12 +0000
committerTim J. Robbins <tjr@FreeBSD.org>2002-07-26 05:25:12 +0000
commit5b3df62e011e9ef74ac3ebad5b27cbf8f3000cee (patch)
tree72638facbd0e6ae477c2e428d1359733f2cd9de7 /usr.bin/csplit
parent93c9745e20d4da181b6e32361515926b28357a24 (diff)
downloadsrc-5b3df62e011e9ef74ac3ebad5b27cbf8f3000cee.tar.gz
src-5b3df62e011e9ef74ac3ebad5b27cbf8f3000cee.zip
Notes
Diffstat (limited to 'usr.bin/csplit')
-rw-r--r--usr.bin/csplit/csplit.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/usr.bin/csplit/csplit.c b/usr.bin/csplit/csplit.c
index dfc8f5bf0fd2..35614be214ad 100644
--- a/usr.bin/csplit/csplit.c
+++ b/usr.bin/csplit/csplit.c
@@ -94,6 +94,7 @@ int doclean; /* Should cleanup() remove output? */
int
main(int argc, char *argv[])
{
+ struct sigaction sa;
long i;
int ch;
const char *expr;
@@ -145,9 +146,15 @@ main(int argc, char *argv[])
if (!kflag) {
doclean = 1;
atexit(cleanup);
- signal(SIGHUP, handlesig);
- signal(SIGINT, handlesig);
- signal(SIGTERM, handlesig);
+ sa.sa_flags = 0;
+ sa.sa_handler = handlesig;
+ sigemptyset(&sa.sa_mask);
+ sigaddset(&sa.sa_mask, SIGHUP);
+ sigaddset(&sa.sa_mask, SIGINT);
+ sigaddset(&sa.sa_mask, SIGTERM);
+ sigaction(SIGHUP, &sa, NULL);
+ sigaction(SIGINT, &sa, NULL);
+ sigaction(SIGTERM, &sa, NULL);
}
lineno = 0;