fixed snarfing by pattern for both variants.
authorChris Koeritz <fred@gruntose.com>
Sun, 19 Feb 2012 22:10:40 +0000 (17:10 -0500)
committerChris Koeritz <fred@gruntose.com>
Sun, 19 Feb 2012 22:10:40 +0000 (17:10 -0500)
scripts/archival/shared_snarfer.pl

index 49257c79ef072b0a3491df90d883ce3574e42c4a..fc6c4f3cb6564ec7f4a32153e94e41832b35a8a6 100644 (file)
@@ -329,27 +329,32 @@ sub backup_hierarchies {
 # used as an extra directory component after the main directory.
 sub snarf_by_pattern {
   local($prefix, $dir, $pattern, $extra_component) = @_;
-#  print "dir = $dir and patt = $pattern\n";
-  $extra_piece = "";
-  $dir_for_hierarchy = ".";
-  if (length($extra_component)) {
-    $extra_piece = "/" . $extra_component;
-    $dir_for_hierarchy = $extra_component;
+  local($had_extra) = length($extra_component) != 0;
+#print "snarf by pattern, dir = $dir, patt = $pattern, extra = $extra_component\n";
+  if ($had_extra) {
+    $dir = "$dir/$extra_component";
   }
-
-  @dir_contents = &glob_list("$dir_for_hierarchy$extra_piece/*$pattern*"); 
-#  print "dir contents: @dir_contents\n";
+  @dir_contents = &glob_list("$dir/*$pattern*"); 
+#print "dir contents: @dir_contents\n";
 
   if (!scalar(@dir_contents)) {
     print "no '$pattern' directores were backed up in $dir.\n";
   }
   
   foreach $item (@dir_contents) {
-#    print "considering backup hier of $item\n";
     if ( ($item =~ /$pattern.*snarf/) || ($item =~ /$pattern.*tar/) ) { next; }
     if ( ! -d "$item" ) { next; }
-#    print "now really planning to backup hier of $item\n";
-    &backup_hierarchy($prefix, $number, $dir_for_hierarchy . $extra_piece, &basename($item));
+#print "now really planning to backup hier of $item\n";
+    # normal backup had no extra component.
+    local $upper_dir = &dirname($item);
+    local $dir_plus_base = &basename($item);
+    # if we did have an extra component, we do this a bit differently.
+    if ($had_extra) {
+      $upper_dir = &dirname( &dirname($item) );
+      $dir_plus_base = &basename( &dirname($item) ) . "/" . &basename($item);
+    }
+#print "using upper=$upper_dir and dir+base=$dir_plus_base\n";
+    &backup_hierarchy($prefix, $number, $upper_dir, $dir_plus_base);
   }
 }