From 929aea7f326dc9875e3ee96254fec30a4a37eb4b Mon Sep 17 00:00:00 2001 From: jh Date: Fri, 29 Jan 2010 10:04:00 +0000 Subject: - Handle short reads when the -P option is used. Short reads must be handled when reading from pipes. - Remove dead code related to the -P option from getvol(). pipein and pipecmdin are never set at the same time. PR: bin/121502 Approved by: trasz (mentor) MFC after: 2 weeks --- sbin/restore/tape.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'sbin/restore') diff --git a/sbin/restore/tape.c b/sbin/restore/tape.c index 6509031..1355aff 100644 --- a/sbin/restore/tape.c +++ b/sbin/restore/tape.c @@ -333,10 +333,6 @@ getvol(long nextvol) } if (volno == 1) return; - if (pipecmdin) { - closemt(); - goto getpipecmdhdr; - } goto gethdr; } again: @@ -400,7 +396,6 @@ again: if (pipecmdin) { char volno[sizeof("2147483647")]; -getpipecmdhdr: (void)sprintf(volno, "%ld", newvol); if (setenv("RESTORE_VOLUME", volno, 1) == -1) { fprintf(stderr, "Cannot set $RESTORE_VOLUME: %s\n", @@ -1205,17 +1200,17 @@ getmore: * Check for mid-tape short read error. * If found, skip rest of buffer and start with the next. */ - if (!pipein && numtrec < ntrec && i > 0) { + if (!pipein && !pipecmdin && numtrec < ntrec && i > 0) { dprintf(stdout, "mid-media short read error.\n"); numtrec = ntrec; } /* * Handle partial block read. */ - if (pipein && i == 0 && rd > 0) + if ((pipein || pipecmdin) && i == 0 && rd > 0) i = rd; else if (i > 0 && i != ntrec * TP_BSIZE) { - if (pipein) { + if (pipein || pipecmdin) { rd += i; cnt -= i; if (cnt > 0) -- cgit v1.1