diff options
author | Dan Fandrich <dan@coneharvesters.com> | 2017-03-09 22:15:54 +0100 |
---|---|---|
committer | Dan Fandrich <dan@coneharvesters.com> | 2017-03-09 22:52:51 +0100 |
commit | 9f3bc40f7f0c5a9b809bd8870c5d63c98cc45777 (patch) | |
tree | 999540cf44929d41f15782848d3a8e1ec4b1c26a /src | |
parent | 7d62502d6c123d08411a0be8a9a38d90861833d8 (diff) |
mkhelp: simplified the gzip code
This eliminates the need for an external gzip program, which wasn't
working with Busybox's gzip, anyway. It now compresses using perl's
IO::Compress::Gzip
Diffstat (limited to 'src')
-rw-r--r-- | src/mkhelp.pl | 59 |
1 files changed, 16 insertions, 43 deletions
diff --git a/src/mkhelp.pl b/src/mkhelp.pl index 74a4b82e2..8b7f72157 100644 --- a/src/mkhelp.pl +++ b/src/mkhelp.pl @@ -102,39 +102,6 @@ while(<READ>) { } close(READ); -# if compressed -if($c) { - my @test = `gzip --version 2>&1`; - if($test[0] =~ /gzip/) { - open(GZIP, ">dumpit") || - die "can't create the dumpit file, try without -c"; - binmode GZIP; - for(@out) { - print GZIP $_; - $gzip += length($_); - } - close(GZIP); - - system("gzip --best --no-name dumpit"); - - open(GZIP, "<dumpit.gz") || - die "can't read the dumpit.gz file, try without -c"; - binmode GZIP; - while(<GZIP>) { - push @gzip, $_; - $gzipped += length($_); - } - close(GZIP); - - unlink("dumpit.gz"); - } - else { - # no gzip, no compression! - undef $c; - print STDERR "MEEEP: Couldn't find gzip, disable compression\n"; - } -} - $now = localtime; print <<HEAD /* @@ -146,27 +113,33 @@ print <<HEAD HEAD ; if($c) { + # if compressed + use IO::Compress::Gzip; + my $content = join("", @out); + my $gzippedContent; + IO::Compress::Gzip::gzip( + \$content, \$gzippedContent, Level => 9, TextFlag => 1) or die "gzip failed:"; + $gzip = length($content); + $gzipped = length($gzippedContent); + print <<HEAD #include <zlib.h> #include "memdebug.h" /* keep this as LAST include */ static const unsigned char hugehelpgz[] = { /* This mumbo-jumbo is the huge help text compressed with gzip. - Thanks to this operation, the size of this data shrunk from $gzip + Thanks to this operation, the size of this data shrank from $gzip to $gzipped bytes. You can disable the use of compressed help texts by NOT passing -c to the mkhelp.pl tool. */ HEAD ; + my $c=0; print " "; - for(@gzip) { - my @all=split(//, $_); - for(@all) { - my $num=ord($_); - printf(" 0x%02x,", 0+$num); - if(++$c>11) { - print "\n "; - $c=0; - } + for(split(//, $gzippedContent)) { + my $num=ord($_); + printf(" 0x%02x,", 0+$num); + if(!(++$c % 12)) { + print "\n "; } } print "\n};\n"; |