diff --git a/src/Makefile.am b/src/Makefile.am index 00c51afd6..1699c96e7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -11,6 +11,14 @@ INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/src -I$(top_srcdir)/src bin_PROGRAMS = curl #memtest +if HAVE_LIBZ +# libz available, attempt to compress the help data +MKHELPOPT=-c +else +# no libz, don't try to compress +MKHELPOPT= +endif + #memtest_SOURCES = memtest.c #memtest_LDADD = $(top_srcdir)/lib/libcurl.la @@ -38,4 +46,4 @@ MKHELP=$(top_srcdir)/src/mkhelp.pl # This generates the hugehelp.c file hugehelp.c: $(README) $(MANPAGE) mkhelp.pl rm -f hugehelp.c - $(NROFF) -man $(MANPAGE) | $(PERL) $(MKHELP) $(README) > hugehelp.c + $(NROFF) -man $(MANPAGE) | $(PERL) -s $(MKHELP) $(MKHELPOPT) $(README) > hugehelp.c diff --git a/src/mkhelp.pl b/src/mkhelp.pl index d58ccf989..8487b8782 100644 --- a/src/mkhelp.pl +++ b/src/mkhelp.pl @@ -6,10 +6,10 @@ # THEY DON'T FIT ME :-) # Get readme file as parameter: -$README = $ARGV[0]; +my $README = $ARGV[0]; if($README eq "") { - print "usage: mkreadme.pl \n"; + print "usage: mkreadme.pl [-c] < manpage\n"; exit; } @@ -20,8 +20,8 @@ push @out, " / __| | | | |_) | | \n"; push @out, " | (__| |_| | _ <| |___ \n"; push @out, " \\___|\\___/|_| \\_\\_____|\n"; -$head=0; -loop: +my $head=0; + while () { $line = $_; @@ -34,13 +34,13 @@ while () { if($line =~ /^curl/i) { # cut off the page headers $head=1; - next loop; + next; } if($line =~ /^[ \t]*\n/) { $wline++; # we only make one empty line max - next loop; + next; } if($wline) { $wline = 0; @@ -54,20 +54,113 @@ while () { push @out, "\n"; # just an extra newline open(READ, "<$README") || - die "couldn't read the README infile"; + die "couldn't read the README infile $README"; while() { push @out, $_; } close(READ); +# if compressed +if($c) { + my @test = `gzip --version 2>&1`; + if($test[0] =~ /gzip/) { + open(GZIP, "|gzip -9 >dumpit.gz"); + binmode GZIP; + for(@out) { + print GZIP $_; + $gzip += length($_); + } + close(GZIP); + + open(GZIP, ") { + push @gzip, $_; + $gzipped += length($_); + } + close(GZIP); + } + else { + # no gzip, no compression! + undef $c; + print STDERR "MEEEP: Couldn't find gzip, disable compression\n"; + } +} -print "/* NEVER EVER edit this manually, fix the mkhelp script instead! */\n" -; -print "#include \n"; -print "void hugehelp(void)\n"; -print "{\n"; -print " fputs (\n"; +$now = localtime; +print < +HEAD + ; +if($c) { + print "/* gzip shrunk this data from $gzip to $gzipped bytes */\n", + "#include \nstatic const unsigned char hugehelpgz[] = {\n "; + my $c=0; + for(@gzip) { + my @all=split(//, $_); + for(@all) { + my $num=ord($_); + printf("0x%02x, ", 0+$num); + if(++$c>11) { + print "\n "; + $c=0; + } + } + } + print "\n};\n"; + + print <