Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Jun 2011 17:54:11 +0000 (UTC)
From:      Tim Kientzle <kientzle@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r223573 - head/usr.bin/tar
Message-ID:  <201106261754.p5QHsBXL062100@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kientzle
Date: Sun Jun 26 17:54:11 2011
New Revision: 223573
URL: http://svn.freebsd.org/changeset/base/223573

Log:
  The --newer-than test should descend into old
  directories to look for new files.
  
  PR:		bin/150890
  Submitted by:	Tobias Herre
  MFC after:	3 weeks

Modified:
  head/usr.bin/tar/write.c

Modified: head/usr.bin/tar/write.c
==============================================================================
--- head/usr.bin/tar/write.c	Sun Jun 26 17:30:46 2011	(r223572)
+++ head/usr.bin/tar/write.c	Sun Jun 26 17:54:11 2011	(r223573)
@@ -752,6 +752,9 @@ write_hierarchy(struct bsdtar *bsdtar, s
 			break;
 		}
 
+		if (bsdtar->option_no_subdirs)
+			descend = 0;
+
 		/*
 		 * Are we about to cross to a new filesystem?
 		 */
@@ -764,7 +767,6 @@ write_hierarchy(struct bsdtar *bsdtar, s
 		} else if (descend == 0) {
 			/* We're not descending, so no need to check. */
 		} else if (bsdtar->option_dont_traverse_mounts) {
-			/* User has asked us not to cross mount points. */
 			descend = 0;
 		} else {
 			/* We're prepared to cross a mount point. */
@@ -791,8 +793,15 @@ write_hierarchy(struct bsdtar *bsdtar, s
 		 * In -u mode, check that the file is newer than what's
 		 * already in the archive; in all modes, obey --newerXXX flags.
 		 */
-		if (!new_enough(bsdtar, name, st))
+		if (!new_enough(bsdtar, name, st)) {
+			if (!descend)
+				continue;
+			if (bsdtar->option_interactive &&
+			    !yes("add '%s'", name))
+				continue;
+			tree_descend(tree);
 			continue;
+		}
 
 		archive_entry_free(entry);
 		entry = archive_entry_new();
@@ -868,8 +877,7 @@ write_hierarchy(struct bsdtar *bsdtar, s
 		    !yes("add '%s'", name))
 			continue;
 
-		/* Note: if user vetoes, we won't descend. */
-		if (descend && !bsdtar->option_no_subdirs)
+		if (descend)
 			tree_descend(tree);
 
 		/*



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