aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDan Fandrich <dan@coneharvesters.com>2017-03-09 22:15:54 +0100
committerDan Fandrich <dan@coneharvesters.com>2017-03-09 22:52:51 +0100
commit9f3bc40f7f0c5a9b809bd8870c5d63c98cc45777 (patch)
tree999540cf44929d41f15782848d3a8e1ec4b1c26a /src
parent7d62502d6c123d08411a0be8a9a38d90861833d8 (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.pl59
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";