X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Farchival%2Fshared_snarfer.pl;h=9edc41427297fde85a2349f197ca938c2d1e420a;hb=abad259144d11f1a8a752f14ae8a79968a073c89;hp=00c41d3f98324a1a54137794e685ef2ed5122b3b;hpb=7ef9f4fdbae698dff9a08189f616564d471abc45;p=feisty_meow.git diff --git a/scripts/archival/shared_snarfer.pl b/scripts/archival/shared_snarfer.pl index 00c41d3f..9edc4142 100644 --- a/scripts/archival/shared_snarfer.pl +++ b/scripts/archival/shared_snarfer.pl @@ -28,15 +28,7 @@ require "inc_num.pl"; use Cwd; use File::Which; -#hmmm: maybe move this to a utility script file. $null_log = "/dev/null"; -#hmmm: move especially this check to a script file, and recast anything -# referring to Windows_NT to it. -if ( ("$OS" =~ /[wW][iI][nN]/) || ("$OS" =~ /[Oo][Ss]2/) - || ("$OS" =~ /[Dd][Oo][Ss]/) ) { - $null_log = "nul" -} -#print "nul log=$null_log \n"; $TMP =~ s/\\/\//g; # fix the temp variable for ms-winders. @@ -93,10 +85,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; } @@ -192,6 +184,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 +224,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 +263,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 |"); ; @@ -277,7 +272,7 @@ sub remove_from_backup { # recursively scoops up a directory hierarchy. sub backup_hierarchy { local($prefix, $number, $root, $filepart) = @_; -print "backup_hierarchy: pref=$prefix, num=$number, root=$root, filepart=$filepart\n"; +#print "backup_hierarchy: pref=$prefix, num=$number, root=$root, filepart=$filepart\n"; local(@locus_temp) = &glob_list($root); local($save_root) = $root; local($root) = $locus_temp[0]; @@ -329,16 +324,13 @@ 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$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"; @@ -347,7 +339,17 @@ sub snarf_by_pattern { foreach $item (@dir_contents) { if ( ($item =~ /$pattern.*snarf/) || ($item =~ /$pattern.*tar/) ) { next; } if ( ! -d "$item" ) { next; } - &backup_hierarchy($prefix, $number, $dir, "$dir_for_hierarchy" . "/" . &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); } } @@ -374,6 +376,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"); } @@ -452,6 +455,7 @@ 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"); }