- 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
This commit is contained in:
Jaakko Heinonen 2010-01-29 10:04:00 +00:00
parent ed72d9a70b
commit 9312d906aa

View File

@ -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)