X-Git-Url: https://git.wh0rd.org/?p=dump.git;a=blobdiff_plain;f=dump%2Ftape.c;h=1990be91bbb952a43c767f985abb3df27ab01775;hp=5e91602395b18257b7fabadf9c58f5d185cc082a;hb=aa2fe29bc559dfbf17805267f10f7bf0b112750f;hpb=206f768c7a7a4bca1c4acc3c686d55578c0cb919 diff --git a/dump/tape.c b/dump/tape.c index 5e91602..1990be9 100644 --- a/dump/tape.c +++ b/dump/tape.c @@ -37,7 +37,7 @@ #ifndef lint static const char rcsid[] = - "$Id: tape.c,v 1.75 2003/03/31 09:42:58 stelian Exp $"; + "$Id: tape.c,v 1.77 2003/04/18 07:47:57 stelian Exp $"; #endif /* not lint */ #include @@ -1133,10 +1133,10 @@ doslave(int cmd, if (compressed) { int bsiz = sizeof(struct tapebuf) + writesize; /* Add extra space to deal with compression enlarging the buffer */ - if (TP_BSIZE > writesize/64 + 19) + if (TP_BSIZE > writesize/16 + 67) bsiz += TP_BSIZE; else - bsiz += writesize/64 + 19; + bsiz += writesize/16 + 67; comp_buf = malloc(bsiz); if (comp_buf == NULL) quit("couldn't allocate a compress buffer.\n"); @@ -1309,11 +1309,12 @@ doslave(int cmd, #ifdef WRITEDEBUG printf("slave %d wrote %d\n", slave_number, wrote); #endif - if (wrote < 0) + if (wrote < 0 && errno != ENOSPC) break; - if (wrote == 0) + if (wrote == 0 || (wrote < 0 && errno == ENOSPC)) eot_count++; - size += wrote; + else + size += wrote; } #ifdef WRITEDEBUG