updated to remove some msys refs.
[feisty_meow.git] / scripts / archival / shared_snarfer.pl
index 4a3d51d1aa36acc1d1083e708cd54d07d16421af..4424d61e4b9223aaa18ab78d41159c92cb316030 100644 (file)
@@ -93,10 +93,10 @@ sub snarf_prefix {
   local($base) = @_;
   $date_tool = "date";
 
-  if ($OS =~ /win/i) {
-    # just hope that this is running under msys in our build bin.
-    $date_tool = "$PRODUCTION_DIR/msys/bin/date";
-  }
+#  if ($OS =~ /win/i) {
+#    # just hope that this is running under msys in our build bin.
+#    $date_tool = "$PRODUCTION_DIR/msys/bin/date";
+#  }
 
   local($date_part) = `$date_tool +%Y-%m-%d-%H%M`;
   while ($date_part =~ /[\r\n]$/) { chop $date_part; }
@@ -177,7 +177,7 @@ sub snarfer {
   chdir($root);
 
   local($outcome) = 0;
-  my @lines = qx( $find_tool $subdir @extra_flags "-type" "f" );
+  my @lines = qx( $find_tool "$subdir" @extra_flags "-type" "f" );
 #  if ( ($! != 0) || ($? != 0) ) {
 #    die("failure to find files in $subdir"); 
 #  }
@@ -192,6 +192,7 @@ sub snarfer {
     push(@missing_log, $base);
   }
 
+print "snarfer function assumes msys canonicalization is appropriate--not cygwin compat.\n";
   local($outcome) = 0xff & system $tar_tool, 
       "-rf", &msys_canonicalize($target_file), @excludes,
       "--files-from=" . &msys_canonicalize($temp_file);
@@ -231,6 +232,7 @@ sub snarf_file_list {
     if ($i =~ /^\.\//) {
       $i = substr $i, 2, length($i) - 2;
     }
+print "snarf_file_list function assumes msys canonicalization is appropriate--not cygwin compat.\n";
     local($outcome) = 0xff & system $tar_tool,
 #"--directory=" . "$root",
         @extra_flags, "-rf", &msys_canonicalize($target_file), @excludes, $i;
@@ -269,6 +271,7 @@ sub remove_from_backup {
 #print "remove_from_backup: pref=$prefix, num=$number, patt=$pattern,\n";
   local($target_file) = &snarf_name($prefix, $number);
 
+print "remove_from_backup function assumes msys canonicalization is appropriate--not cygwin compat.\n";
   open(TARPROC, "$tar_tool --delete -f " . &msys_canonicalize($target_file)
       . " \"$pattern\" 2>$null_log |");
   <TARPROC>;
@@ -324,22 +327,37 @@ sub backup_hierarchies {
   }
 }
 
-# grab up all the files in a directory (first parm) that are named matching
-# a simple text pattern (second parm).
+# grab up all the files in a directory (second parm) that are named matching
+# a simple text pattern (third parm).  if there is a fourth parameter, it is
+# used as an extra directory component after the main directory.
 sub snarf_by_pattern {
-  local($dir, $pattern) = @_;
-#  print "dir = $dir and patt = $pattern\n";
-
+  local($prefix, $dir, $pattern, $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/*$pattern*"); 
-#  print "dir contents: @dir_contents\n";
+#print "dir contents: @dir_contents\n";
 
   if (!scalar(@dir_contents)) {
-    print "no $pattern directores were backed up in $dir.\n";
+    print "no '$pattern' directores were backed up in $dir.\n";
   }
+  
   foreach $item (@dir_contents) {
     if ( ($item =~ /$pattern.*snarf/) || ($item =~ /$pattern.*tar/) ) { next; }
     if ( ! -d "$item" ) { next; }
-    &backup_hierarchy($base, $number, $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);
   }
 }
 
@@ -366,6 +384,7 @@ sub backup_number {
   local($currdir) = cwd();
   chdir($TMP);
 
+print "backup_number function assumes msys canonicalization is appropriate--not cygwin compat.\n";
   local($outcome) = 0xff & system $tar_tool, "-cf",
       &msys_canonicalize($target_file), &msys_canonicalize($number_file);
   if ($outcome) { die("failure to archive"); }
@@ -444,12 +463,13 @@ sub restore_archive {
     $filename = "../" . $filename;
   }
 
+print "restore_archive function assumes msys canonicalization is appropriate--not cygwin compat.\n";
   local($outcome) = 0xff & system $tar_tool, "-xzf",
       &msys_canonicalize($filename);
   if ($outcome) { die("failure to undo archive"); }
 
   local($outcome) =
-      0xff & system "bash", "$SHELLDIR/files/normal_perm.sh", ".";
+      0xff & system "bash", "$FEISTY_MEOW_SCRIPTS/files/normal_perm.sh", ".";
   if ($outcome) { die("failure to normalize permissions"); }
 
   # remove any links that might have crept in; these can cause mischief.