X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=dump%2Ftape.c;h=851a5cdc5204375bac819394cfd9f894fbe7014b;hb=79e318657e7faa7b2951ff554dc6f1b92624a477;hp=c1046674682714d459d00a25574d494fda3f9208;hpb=d8574d458324cdde27484485cb09e7c9b8fa1a77;p=dump.git diff --git a/dump/tape.c b/dump/tape.c index c104667..851a5cd 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.21 2000/08/19 22:06:03 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,9 @@ enslave(void) master = getpid(); { struct sigaction sa; + sa.sa_sigaction = NULL; + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; sa.sa_handler = dumpabort; sigaction(SIGTERM, &sa, NULL); /* Slave sends SIGTERM on dumpabort() */ sa.sa_handler = sigpipe; @@ -1081,6 +1084,7 @@ doslave(int cmd, int slave_number) if (wrote < 0) { (void) kill(master, SIGUSR1); sigemptyset(&sigset); + sigaddset(&sigset, SIGINT); for (;;) sigsuspend(&sigset); } else {