diff --git a/filemin/compress.cgi b/filemin/compress.cgi index bbeb0e98c..2dc389710 100755 --- a/filemin/compress.cgi +++ b/filemin/compress.cgi @@ -5,25 +5,33 @@ require './filemin-lib.pl'; get_paths(); if(!$in{'arch'}) { - &redirect("index.cgi?path=".&urlize($path)); -} + &redirect("index.cgi?path=".&urlize($path)); + return; + } my $command; -if($in{'method'} eq 'tar') { - $command = "tar czf ".quotemeta("$cwd/$in{'arch'}.tar.gz"). - " -C ".quotemeta($cwd); -} elsif($in{'method'} eq 'zip') { - $command = "cd ".quotemeta($cwd)." && zip -r ". - quotemeta("$cwd/$in{'arch'}.zip"); -} +if ($in{'method'} eq 'tar') { + $full = "$cwd/$in{'arch'}.tar.gz"; + $command = "tar czf ".quotemeta($full)." -C ".quotemeta($cwd); + } +elsif ($in{'method'} eq 'zip') { + $full = "$cwd/$in{'arch'}.zip"; + $command = "cd ".quotemeta($cwd)." && zip -r ".quotemeta($full); + } +else { + &error("Unknown method!"); + } +$newfile = !-e $full; -foreach my $name(split(/\0/, $in{'name'})) -{ - $name =~ s/$in{'cwd'}\///ig; - $command .= " ".quotemeta($name); -} +foreach my $name (split(/\0/, $in{'name'})) { + $command .= " ".quotemeta($name); + } -system_logged($command); +my @st = stat($cwd); +&system_logged($command); +if ($newfile) { + &set_ownership_permissions($st[4], $st[5], undef, $full); + } &redirect("index.cgi?path=".&urlize($path));