diff -r 38b3bff416ba -r 24b1c19790bb bin/imager.save --- a/bin/imager.save Tue Aug 16 11:44:32 2011 +0200 +++ b/bin/imager.save Tue Aug 16 14:12:28 2011 +0200 @@ -148,8 +148,6 @@ my ($file, $ext, $cs); $file = $cs = md5_hex($buffer); $file =~ s/(?(?...).*)/$+{prefix}\/$+{fn}/g; - $ext = ""; - $ext .= $o{compress} ? ".gz" : ""; $ext .= $o{pass} ? ".x" : ""; # the extension we do not put into the index @@ -174,15 +172,22 @@ open($out, "|openssl @{[CIPHER]} -pass $o{pass} -out $out"); } binmode($out); + if ($o{compress}) { + my $zbuffer; gzip( - \$buffer => $out, + \$buffer => \$zbuffer, -Minimal => 1, -Level => Z_BEST_SPEED, -Strategy => Z_FILTERED ) or die $GzipError; + if (length($zbuffer)/length($buffer) < 0.9) { + $buffer = $zbuffer; + $ext = ".gz$ext"; + } } - else { print {$out} $buffer } + + print {$out} $buffer; close($out); rename($out => "$data/$file$ext"); $index{BLOCKS}[$. - 1] .= " *";