#
#========================================================================
#
-# Version 2.1.0_CVS, released 8 Feb 2004.
+# Version 2.1.0beta2, released 23 May 2004.
#
# See http://backuppc.sourceforge.net.
#
(my $name = $In{"fcb$i"}) =~ s/%([0-9A-F]{2})/chr(hex($1))/eg;
$badFileCnt++ if ( $name =~ m{(^|/)\.\.(/|$)} );
if ( @fileList == 0 ) {
- $pathHdr = $name;
+ $pathHdr = substr($name, 0, rindex($name, "/"));
} else {
while ( substr($name, 0, length($pathHdr)) ne $pathHdr ) {
$pathHdr = substr($pathHdr, 0, rindex($pathHdr, "/"));
if ( $badFileCnt ) {
ErrorExit($Lang->{Nice_try__but_you_can_t_put});
}
- if ( @fileList == 1 ) {
- $pathHdr =~ s/(.*)\/.*/$1/;
- }
$pathHdr = "/" if ( $pathHdr eq "" );
if ( $In{type} != 0 && @fileList == $In{fcbMax} ) {
#
#
my $hostDestSel;
my @hosts;
- foreach my $h ( GetUserHosts() ) {
+ foreach my $h ( GetUserHosts(1) ) {
my $sel = " selected" if ( $h eq $In{host} );
$hostDestSel .= "<option value=\"$h\"$sel>${EscHTML($h)}</option>";
push(@hosts, $h);
# This is necessary to ensure the output gets to the correct place
# under mod_perl.
#
- $bpc->cmdSystemOrEval(["$BinDir/BackupPC_tarCreate",
+ $bpc->cmdSystemOrEvalLong(["$BinDir/BackupPC_tarCreate",
"-h", $host,
"-n", $num,
"-s", $share,
@pathOpts,
@fileList
],
- sub { print(@_); }
+ sub { print(@_); },
+ 1, # ignore stderr
);
} elsif ( $In{type} == 2 ) {
#
# This is necessary to ensure the output gets to the correct place
# under mod_perl.
#
- $bpc->cmdSystemOrEval(["$BinDir/BackupPC_zipCreate",
+ $bpc->cmdSystemOrEvalLong(["$BinDir/BackupPC_zipCreate",
"-h", $host,
"-n", $num,
"-c", $In{compressLevel},
@pathOpts,
@fileList
],
- sub { print(@_); }
+ sub { print(@_); },
+ 1, # ignore stderr
);
} elsif ( $In{type} == 3 ) {
#
my $targetFile = $f;
(my $strippedShare = $share) =~ s/^\///;
(my $strippedShareDest = $In{shareDest}) =~ s/^\///;
- substr($targetFile, 0, length($pathHdr)) = $In{pathHdr};
+ substr($targetFile, 0, length($pathHdr)) = "/$In{pathHdr}/";
+ $targetFile =~ s{//+}{/}g;
$fileListStr .= <<EOF;
<tr><td>$host:/$strippedShare$f</td><td>$In{hostDest}:/$strippedShareDest$targetFile</td></tr>
EOF
$reqFileName = "restoreReq.$$.$i";
last if ( !-f "$TopDir/pc/$hostDest/$reqFileName" );
}
+ my $inPathHdr = $In{pathHdr};
+ $inPathHdr = "/$inPathHdr" if ( $inPathHdr !~ m{^/} );
+ $inPathHdr = "$inPathHdr/" if ( $inPathHdr !~ m{/$} );
my %restoreReq = (
# source of restore is hostSrc, #num, path shareSrc/pathHdrSrc
num => $In{num},
# destination of restore is hostDest:shareDest/pathHdrDest
hostDest => $hostDest,
shareDest => $In{shareDest},
- pathHdrDest => $In{pathHdr},
+ pathHdrDest => $inPathHdr,
# list of files to restore
fileList => \@fileList,