Mercurial > hgrepos > Python2 > PyMuPDF
diff mupdf-source/thirdparty/curl/src/mkhelp.pl @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mupdf-source/thirdparty/curl/src/mkhelp.pl Mon Sep 15 11:43:07 2025 +0200 @@ -0,0 +1,235 @@ +#!/usr/bin/env perl +#*************************************************************************** +# _ _ ____ _ +# Project ___| | | | _ \| | +# / __| | | | |_) | | +# | (__| |_| | _ <| |___ +# \___|\___/|_| \_\_____| +# +# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. The terms +# are also available at https://curl.haxx.se/docs/copyright.html. +# +# You may opt to use, copy, modify, merge, publish, distribute and/or sell +# copies of the Software, and permit persons to whom the Software is +# furnished to do so, under the terms of the COPYING file. +# +# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +# KIND, either express or implied. +# +########################################################################### + +# Yeah, I know, probably 1000 other persons already wrote a script like +# this, but I'll tell ya: + +# THEY DON'T FIT ME :-) + +# Get readme file as parameter: + +if($ARGV[0] eq "-c") { + $c=1; + shift @ARGV; +} + +push @out, " _ _ ____ _\n"; +push @out, " Project ___| | | | _ \\| |\n"; +push @out, " / __| | | | |_) | |\n"; +push @out, " | (__| |_| | _ <| |___\n"; +push @out, " \\___|\\___/|_| \\_\\_____|\n"; + +my $olen=0; +while (<STDIN>) { + my $line = $_; + + # this should be removed: + $line =~ s/(.|_)//g; + + # remove trailing CR from line. msysgit checks out files as line+CRLF + $line =~ s/\r$//; + + if($line =~ /^([ \t]*\n|curl)/i) { + # cut off headers and empty lines + $wline++; # count number of cut off lines + next; + } + + my $text = $line; + $text =~ s/^\s+//g; # cut off preceding... + $text =~ s/\s+$//g; # and trailing whitespaces + + $tlen = length($text); + + if($wline && ($olen == $tlen)) { + # if the previous line with contents was exactly as long as + # this line, then we ignore the newlines! + + # We do this magic because a header may abort a paragraph at + # any line, but we don't want that to be noticed in the output + # here + $wline=0; + } + $olen = $tlen; + + if($wline) { + # we only make one empty line max + $wline = 0; + push @out, "\n"; + } + push @out, $line; +} +push @out, "\n"; # just an extra newline + +print <<HEAD +/* + * NEVER EVER edit this manually, fix the mkhelp.pl script instead! + */ +#ifdef USE_MANUAL +#include "tool_hugehelp.h" +HEAD + ; +if($c) { + # If compression requested, check that the Gzip module is available + # or else disable compression + $c = eval + { + require IO::Compress::Gzip; + IO::Compress::Gzip->import(); + 1; + }; + print STDERR "Warning: compression requested but Gzip is not available\n" if (!$c) +} + +if($c) +{ + my $content = join("", @out); + my $gzippedContent; + IO::Compress::Gzip::gzip( + \$content, \$gzippedContent, Level => 9, TextFlag => 1, Time=>0) 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 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(split(//, $gzippedContent)) { + my $num=ord($_); + printf(" 0x%02x,", 0+$num); + if(!(++$c % 12)) { + print "\n "; + } + } + print "\n};\n"; + + print <<EOF +#define BUF_SIZE 0x10000 +static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size) +{ + (void) opaque; + /* not a typo, keep it calloc() */ + return (voidpf) calloc(items, size); +} +static void zfree_func(voidpf opaque, voidpf ptr) +{ + (void) opaque; + free(ptr); +} +/* Decompress and send to stdout a gzip-compressed buffer */ +void hugehelp(void) +{ + unsigned char* buf; + int status,headerlen; + z_stream z; + + /* Make sure no gzip options are set */ + if (hugehelpgz[3] & 0xfe) + return; + + headerlen = 10; + memset(&z, 0, sizeof(z_stream)); + z.zalloc = (alloc_func)zalloc_func; + z.zfree = (free_func)zfree_func; + z.avail_in = (unsigned int)(sizeof(hugehelpgz) - headerlen); + z.next_in = (unsigned char *)hugehelpgz + headerlen; + + if (inflateInit2(&z, -MAX_WBITS) != Z_OK) + return; + + buf = malloc(BUF_SIZE); + if (buf) { + while(1) { + z.avail_out = BUF_SIZE; + z.next_out = buf; + status = inflate(&z, Z_SYNC_FLUSH); + if (status == Z_OK || status == Z_STREAM_END) { + fwrite(buf, BUF_SIZE - z.avail_out, 1, stdout); + if (status == Z_STREAM_END) + break; + } + else + break; /* Error */ + } + free(buf); + } + inflateEnd(&z); +} +EOF + ; +foot(); +exit; +} +else { + print <<HEAD +void hugehelp(void) +{ + fputs( +HEAD + ; +} + +$outsize=0; +for(@out) { + chop; + + $new = $_; + + $outsize += length($new)+1; # one for the newline + + $new =~ s/\\/\\\\/g; + $new =~ s/\"/\\\"/g; + + # gcc 2.96 claims ISO C89 only is required to support 509 letter strings + if($outsize > 500) { + # terminate and make another fputs() call here + print ", stdout);\n fputs(\n"; + $outsize=length($new)+1; + } + printf("\"%s\\n\"\n", $new); + +} + +print ", stdout) ;\n}\n"; + +foot(); + +sub foot { + print <<FOOT +#else /* !USE_MANUAL */ +/* built-in manual is disabled, blank function */ +#include "tool_hugehelp.h" +void hugehelp(void) {} +#endif /* USE_MANUAL */ +FOOT + ; +}
