Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 May 2010 16:33:38 +0000 (UTC)
From:      Jaakko Heinonen <jh@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org
Subject:   svn commit: r208153 - stable/7/sbin/restore
Message-ID:  <201005161633.o4GGXcNE054662@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jh
Date: Sun May 16 16:33:38 2010
New Revision: 208153
URL: http://svn.freebsd.org/changeset/base/208153

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

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

Modified: stable/7/sbin/restore/tape.c
==============================================================================
--- stable/7/sbin/restore/tape.c	Sun May 16 15:56:59 2010	(r208152)
+++ stable/7/sbin/restore/tape.c	Sun May 16 16:33:38 2010	(r208153)
@@ -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)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201005161633.o4GGXcNE054662>