From c771d8f672e6f980d22c81be9df126f0574388d5 Mon Sep 17 00:00:00 2001 From: Chris Koeritz Date: Sun, 19 Feb 2012 17:10:40 -0500 Subject: [PATCH] fixed snarfing by pattern for both variants. --- scripts/archival/shared_snarfer.pl | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/scripts/archival/shared_snarfer.pl b/scripts/archival/shared_snarfer.pl index 49257c79..fc6c4f3c 100644 --- a/scripts/archival/shared_snarfer.pl +++ b/scripts/archival/shared_snarfer.pl @@ -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); } } -- 2.34.1