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);
 
                /*
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to