X-Git-Url: http://git.rot13.org/?p=BackupPC.git;a=blobdiff_plain;f=bin%2FBackupPC_tarExtract;h=32044f6d05bd2fdd5e729fc9f305462153509596;hp=270776f713d1ccaed89c4eb218f55ea78cf9db34;hb=17dcbbebb871212f90b81bb97f8d1feb528bdc43;hpb=2a48c566d7648f26c5a81f24de23be5e0edb05b2;ds=sidebyside diff --git a/bin/BackupPC_tarExtract b/bin/BackupPC_tarExtract index 270776f..32044f6 100755 --- a/bin/BackupPC_tarExtract +++ b/bin/BackupPC_tarExtract @@ -58,7 +58,7 @@ if ( $ARGV[0] !~ /^([\w\.\s-]+)$/ ) { exit(1); } my $client = $1; -if ( $ARGV[1] !~ /^([\w\s\.\/\$-]+)$/ ) { +if ( $ARGV[1] !~ /^([\w\s.\/$(){}[\]-]+)$/ ) { print("$0: bad share name '$ARGV[1]'\n"); exit(1); } @@ -313,7 +313,7 @@ sub TarReadFile # my($nRead); #print("Reading $f->{name}, $f->{size} bytes, type $f->{type}\n"); - pathCreate($dir, "$OutDir/$ShareName/$f->{mangleName}", $f); + pathCreate($dir, "$OutDir/$ShareName/$f->{mangleName}", $file, $f); my $poolWrite = BackupPC::PoolWrite->new($bpc, "$OutDir/$ShareName/$f->{mangleName}", $f->{size}, $Compress); @@ -351,7 +351,7 @@ sub TarReadFile # a plain file. # $f->{size} = length($f->{linkname}); - pathCreate($dir, "$OutDir/$ShareName/$f->{mangleName}", $f); + pathCreate($dir, "$OutDir/$ShareName/$f->{mangleName}", $file, $f); my $poolWrite = BackupPC::PoolWrite->new($bpc, "$OutDir/$ShareName/$f->{mangleName}", $f->{size}, $Compress); @@ -369,7 +369,7 @@ sub TarReadFile # contents. # $f->{size} = length($f->{linkname}); - pathCreate($dir, "$OutDir/$ShareName/$f->{mangleName}", $f); + pathCreate($dir, "$OutDir/$ShareName/$f->{mangleName}", $file, $f); my $poolWrite = BackupPC::PoolWrite->new($bpc, "$OutDir/$ShareName/$f->{mangleName}", $f->{size}, $Compress); @@ -393,7 +393,7 @@ sub TarReadFile } else { $data = "$f->{devmajor},$f->{devminor}"; } - pathCreate($dir, "$OutDir/$ShareName/$f->{mangleName}", $f); + pathCreate($dir, "$OutDir/$ShareName/$f->{mangleName}", $file, $f); my $poolWrite = BackupPC::PoolWrite->new($bpc, "$OutDir/$ShareName/$f->{mangleName}", length($data), $Compress); @@ -487,15 +487,17 @@ sub logFileAction # sub pathCreate { - my($dir, $file, $f) = @_; + my($dir, $fullPath, $file, $f) = @_; # - # Get parent directory of each of $dir and $file + # Get parent directory of each of $dir and $fullPath # - $dir =~ s{/[^/]*$}{}; - $file =~ s{/[^/]*$}{}; - return if ( -d $file ); - mkpath($file, 0, 0777); + $dir =~ s{/[^/]*$}{}; + $fullPath =~ s{/[^/]*$}{}; + return if ( -d $fullPath ); + mkpath($fullPath, 0, 0777); + $Attrib{$dir} = BackupPC::Attrib->new({ compress => $Compress }) + if ( !defined($Attrib{$dir}) ); $Attrib{$dir}->set($file, { type => BPC_FTYPE_DIR, mode => 0755,