bin/imager.save
changeset 62 24b1c19790bb
parent 61 38b3bff416ba
child 72 2a7ab8422dd6
--- 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/(?<fn>(?<prefix>...).*)/$+{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] .= " *";