X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=dump%2Ftape.c;h=63b64260db1d73cf928b5dd426def5feaf650771;hb=1cd75c4cd5a7da33b3a15d6275806096c9781ca7;hp=c1046674682714d459d00a25574d494fda3f9208;hpb=d8574d458324cdde27484485cb09e7c9b8fa1a77;p=dump.git diff --git a/dump/tape.c b/dump/tape.c index c104667..63b6426 100644 --- a/dump/tape.c +++ b/dump/tape.c @@ -40,7 +40,7 @@ #ifndef lint static const char rcsid[] = - "$Id: tape.c,v 1.20 2000/06/01 18:30:08 stelian Exp $"; + "$Id: tape.c,v 1.23 2000/08/30 08:55:21 stelian Exp $"; #endif /* not lint */ #ifdef __linux__ @@ -877,9 +877,9 @@ Exit(int status) static void proceed(int signo) { - caught++; if (ready) siglongjmp(jmpbuf, 1); + caught++; } void @@ -895,6 +895,8 @@ enslave(void) master = getpid(); { struct sigaction sa; + memset(&sa, 0, sizeof sa); + sigemptyset(&sa.sa_mask); sa.sa_handler = dumpabort; sigaction(SIGTERM, &sa, NULL); /* Slave sends SIGTERM on dumpabort() */ sa.sa_handler = sigpipe; @@ -1081,6 +1083,7 @@ doslave(int cmd, int slave_number) if (wrote < 0) { (void) kill(master, SIGUSR1); sigemptyset(&sigset); + sigaddset(&sigset, SIGINT); for (;;) sigsuspend(&sigset); } else {