Module Name:    src
Committed By:   christos
Date:           Thu Mar 11 01:32:59 UTC 2010

Modified Files:
        src/sbin/dump: itime.c main.c

Log Message:
PR/42952: The Grey Wolf: Fix for "true incremental". Don't overload level
9, use a new level "i" which is logically 10.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sbin/dump/itime.c
cvs rdiff -u -r1.65 -r1.66 src/sbin/dump/main.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sbin/dump/itime.c
diff -u src/sbin/dump/itime.c:1.17 src/sbin/dump/itime.c:1.18
--- src/sbin/dump/itime.c:1.17	Thu Feb 25 21:11:40 2010
+++ src/sbin/dump/itime.c	Wed Mar 10 20:32:59 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: itime.c,v 1.17 2010/02/26 02:11:40 christos Exp $	*/
+/*	$NetBSD: itime.c,v 1.18 2010/03/11 01:32:59 christos Exp $	*/
 
 /*-
  * Copyright (c) 1980, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)itime.c	8.1 (Berkeley) 6/5/93";
 #else
-__RCSID("$NetBSD: itime.c,v 1.17 2010/02/26 02:11:40 christos Exp $");
+__RCSID("$NetBSD: itime.c,v 1.18 2010/03/11 01:32:59 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -146,13 +146,18 @@
 	/*
 	 *	Go find the entry with the same name for a lower increment
 	 *	and older date.  If we are doing a true incremental, then
-	 *	we can use level 9 as a ref point
+	 *	we can use any level as a ref point.
 	 */
 	ITITERATE(i, ddp) {
 		if (strncmp(fname, ddp->dd_name, sizeof (ddp->dd_name)) != 0)
 			continue;
-		if ((!trueinc && (ddp->dd_level >= level)) ||
-		    (trueinc && (ddp->dd_level > level)))
+		/* trueinc: ostensibly could omit the second clause
+		 * since if trueinc is set, we don't care about the level
+		 * at all.
+		 */
+		/* if ((!trueinc && (ddp->dd_level >= level)) ||
+		    (trueinc && (ddp->dd_level > level))) */
+		if (!trueinc && (ddp->dd_level >= level))
 			continue;
 		if (ddp->dd_ddate <= iswap32(spcl.c_ddate))
 			continue;

Index: src/sbin/dump/main.c
diff -u src/sbin/dump/main.c:1.65 src/sbin/dump/main.c:1.66
--- src/sbin/dump/main.c:1.65	Thu Feb 25 21:11:40 2010
+++ src/sbin/dump/main.c	Wed Mar 10 20:32:59 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: main.c,v 1.65 2010/02/26 02:11:40 christos Exp $	*/
+/*	$NetBSD: main.c,v 1.66 2010/03/11 01:32:59 christos Exp $	*/
 
 /*-
  * Copyright (c) 1980, 1991, 1993, 1994
@@ -39,7 +39,7 @@
 #if 0
 static char sccsid[] = "@(#)main.c	8.6 (Berkeley) 5/1/95";
 #else
-__RCSID("$NetBSD: main.c,v 1.65 2010/02/26 02:11:40 christos Exp $");
+__RCSID("$NetBSD: main.c,v 1.66 2010/03/11 01:32:59 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -181,8 +181,8 @@
 			honorlevel = numarg("honor level", 0L, 10L);
 			break;
 
-		case 'i':	/* "true incremental" regardless level 9 */
-			level = '9';
+		case 'i':	/* "true incremental" regardless level */
+			level = 'i';
 			trueinc = 1;
 			break;
 
@@ -470,7 +470,8 @@
 
 	needswap = fs_read_sblock(sblock_buf);
 
-	spcl.c_level = iswap32(level - '0');
+	/* true incremental is always a level 10 dump */
+	spcl.c_level = trueinc? iswap32(10): iswap32(level - '0');
 	spcl.c_type = iswap32(TS_TAPE);
 	spcl.c_date = iswap32(spcl.c_date);
 	spcl.c_ddate = iswap32(spcl.c_ddate);

Reply via email to