]> git.wh0rd.org - dump.git/blobdiff - dump/tape.c
dump hang workaround.
[dump.git] / dump / tape.c
index f61fc879ee395b2228fe61d4e510d0348ea96210..71de659ba9f40cc8b60d243d209140155ea105f2 100644 (file)
@@ -41,7 +41,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: tape.c,v 1.55 2001/09/06 09:00:32 stelian Exp $";
+       "$Id: tape.c,v 1.58 2001/11/17 10:44:18 stelian Exp $";
 #endif /* not lint */
 
 #include <config.h>
@@ -68,7 +68,6 @@ int    write(), read();
 #endif
 #include <sys/param.h>
 #include <sys/socket.h>
-#include <sys/time.h>
 #include <sys/wait.h>
 #include <sys/mtio.h>
 #ifdef __linux__
@@ -1041,6 +1040,12 @@ doslave(int cmd, int slave_number, int first)
        union u_spcl *uspclptr;
        struct s_spcl *spclptr;
 #endif /* USE_QFA */
+       sigset_t set;
+
+       sigemptyset(&set);
+       sigaddset(&set, SIGUSR2);
+       sigprocmask(SIG_BLOCK, &set, NULL);
+       sigemptyset(&set);
 
        /*
         * Need our own seek pointer.
@@ -1123,6 +1128,7 @@ doslave(int cmd, int slave_number, int first)
                if (compressed && do_compress) {
                        comp_buf->length = bufsize;
                        worklen = TP_BSIZE + writesize;
+                       compresult = 1;
 #ifdef HAVE_ZLIB
                        if (!bzipflag) {
                                compresult = compress2(comp_buf->buf, 
@@ -1178,7 +1184,7 @@ doslave(int cmd, int slave_number, int first)
                if (sigsetjmp(jmpbuf, 1) == 0) {
                        ready = 1;
                        if (!caught)
-                               (void) pause();
+                               sigsuspend(&set);
                }
                ready = 0;
                caught = 0;