Author: jh
Date: Sat Feb 20 13:35:05 2010
New Revision: 204119
URL: http://svn.freebsd.org/changeset/base/204119

Log:
  MFC r203157, r203816:
  
  Handle short reads when the -P option is used and remove some dead code.
  
  PR:           bin/121502

Modified:
  stable/8/sbin/restore/tape.c
Directory Properties:
  stable/8/sbin/restore/   (props changed)

Modified: stable/8/sbin/restore/tape.c
==============================================================================
--- stable/8/sbin/restore/tape.c        Sat Feb 20 13:33:50 2010        
(r204118)
+++ stable/8/sbin/restore/tape.c        Sat Feb 20 13:35:05 2010        
(r204119)
@@ -227,7 +227,7 @@ setup(void)
        volno = 1;
        setdumpnum();
        FLUSHTAPEBUF();
-       if (!pipein && !bflag)
+       if (!pipein && !pipecmdin && !bflag)
                findtapeblksize();
        if (gethead(&spcl) == FAIL) {
                fprintf(stderr, "Tape is not a dump tape\n");
@@ -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, "%d", newvol);
                if (setenv("RESTORE_VOLUME", volno, 1) == -1) {
                        fprintf(stderr, "Cannot set $RESTORE_VOLUME: %s\n",
@@ -1204,17 +1199,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)
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to