#
#========================================================================
#
-# Version 2.1.0_CVS, released 8 Feb 2004.
+# Version 2.1.0beta0, released 20 Mar 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, "/"));
#
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);
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,