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.
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; }
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);
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;
#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>;
# 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);
}
}
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"); }
$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"); }