packages feed

digest 0.0.0.4 → 0.0.0.5

raw patch · 4 files changed

+2/−1933 lines, 4 filesdep +zlibPVP ok

version bump matches the API change (PVP)

Dependencies added: zlib

API changes (from Hackage documentation)

Files

− cbits/adler32.c
@@ -1,149 +0,0 @@-/* adler32.c -- compute the Adler-32 checksum of a data stream- * Copyright (C) 1995-2004 Mark Adler- * For conditions of distribution and use, see copyright notice in zlib.h- */--/* @(#) $Id$ */--#define ZLIB_INTERNAL-#include "zlib.h"--#define BASE 65521UL    /* largest prime smaller than 65536 */-#define NMAX 5552-/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */--#define DO1(buf,i)  {adler += (buf)[i]; sum2 += adler;}-#define DO2(buf,i)  DO1(buf,i); DO1(buf,i+1);-#define DO4(buf,i)  DO2(buf,i); DO2(buf,i+2);-#define DO8(buf,i)  DO4(buf,i); DO4(buf,i+4);-#define DO16(buf)   DO8(buf,0); DO8(buf,8);--/* use NO_DIVIDE if your processor does not do division in hardware */-#ifdef NO_DIVIDE-#  define MOD(a) \-    do { \-        if (a >= (BASE << 16)) a -= (BASE << 16); \-        if (a >= (BASE << 15)) a -= (BASE << 15); \-        if (a >= (BASE << 14)) a -= (BASE << 14); \-        if (a >= (BASE << 13)) a -= (BASE << 13); \-        if (a >= (BASE << 12)) a -= (BASE << 12); \-        if (a >= (BASE << 11)) a -= (BASE << 11); \-        if (a >= (BASE << 10)) a -= (BASE << 10); \-        if (a >= (BASE << 9)) a -= (BASE << 9); \-        if (a >= (BASE << 8)) a -= (BASE << 8); \-        if (a >= (BASE << 7)) a -= (BASE << 7); \-        if (a >= (BASE << 6)) a -= (BASE << 6); \-        if (a >= (BASE << 5)) a -= (BASE << 5); \-        if (a >= (BASE << 4)) a -= (BASE << 4); \-        if (a >= (BASE << 3)) a -= (BASE << 3); \-        if (a >= (BASE << 2)) a -= (BASE << 2); \-        if (a >= (BASE << 1)) a -= (BASE << 1); \-        if (a >= BASE) a -= BASE; \-    } while (0)-#  define MOD4(a) \-    do { \-        if (a >= (BASE << 4)) a -= (BASE << 4); \-        if (a >= (BASE << 3)) a -= (BASE << 3); \-        if (a >= (BASE << 2)) a -= (BASE << 2); \-        if (a >= (BASE << 1)) a -= (BASE << 1); \-        if (a >= BASE) a -= BASE; \-    } while (0)-#else-#  define MOD(a) a %= BASE-#  define MOD4(a) a %= BASE-#endif--/* ========================================================================= */-uLong ZEXPORT adler32(adler, buf, len)-    uLong adler;-    const Bytef *buf;-    uInt len;-{-    unsigned long sum2;-    unsigned n;--    /* split Adler-32 into component sums */-    sum2 = (adler >> 16) & 0xffff;-    adler &= 0xffff;--    /* in case user likes doing a byte at a time, keep it fast */-    if (len == 1) {-        adler += buf[0];-        if (adler >= BASE)-            adler -= BASE;-        sum2 += adler;-        if (sum2 >= BASE)-            sum2 -= BASE;-        return adler | (sum2 << 16);-    }--    /* initial Adler-32 value (deferred check for len == 1 speed) */-    if (buf == Z_NULL)-        return 1L;--    /* in case short lengths are provided, keep it somewhat fast */-    if (len < 16) {-        while (len--) {-            adler += *buf++;-            sum2 += adler;-        }-        if (adler >= BASE)-            adler -= BASE;-        MOD4(sum2);             /* only added so many BASE's */-        return adler | (sum2 << 16);-    }--    /* do length NMAX blocks -- requires just one modulo operation */-    while (len >= NMAX) {-        len -= NMAX;-        n = NMAX / 16;          /* NMAX is divisible by 16 */-        do {-            DO16(buf);          /* 16 sums unrolled */-            buf += 16;-        } while (--n);-        MOD(adler);-        MOD(sum2);-    }--    /* do remaining bytes (less than NMAX, still just one modulo) */-    if (len) {                  /* avoid modulos if none remaining */-        while (len >= 16) {-            len -= 16;-            DO16(buf);-            buf += 16;-        }-        while (len--) {-            adler += *buf++;-            sum2 += adler;-        }-        MOD(adler);-        MOD(sum2);-    }--    /* return recombined sums */-    return adler | (sum2 << 16);-}--/* ========================================================================= */-uLong ZEXPORT adler32_combine(adler1, adler2, len2)-    uLong adler1;-    uLong adler2;-    z_off_t len2;-{-    unsigned long sum1;-    unsigned long sum2;-    unsigned rem;--    /* the derivation of this formula is left as an exercise for the reader */-    rem = (unsigned)(len2 % BASE);-    sum1 = adler1 & 0xffff;-    sum2 = rem * sum1;-    MOD(sum2);-    sum1 += (adler2 & 0xffff) + BASE - 1;-    sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem;-    if (sum1 > BASE) sum1 -= BASE;-    if (sum1 > BASE) sum1 -= BASE;-    if (sum2 > (BASE << 1)) sum2 -= (BASE << 1);-    if (sum2 > BASE) sum2 -= BASE;-    return sum1 | (sum2 << 16);-}
− cbits/crc32.c
@@ -1,423 +0,0 @@-/* crc32.c -- compute the CRC-32 of a data stream- * Copyright (C) 1995-2005 Mark Adler- * For conditions of distribution and use, see copyright notice in zlib.h- *- * Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster- * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing- * tables for updating the shift register in one step with three exclusive-ors- * instead of four steps with four exclusive-ors.  This results in about a- * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.- */--/* @(#) $Id$ */--/*-  Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore-  protection on the static variables used to control the first-use generation-  of the crc tables.  Therefore, if you #define DYNAMIC_CRC_TABLE, you should-  first call get_crc_table() to initialize the tables before allowing more than-  one thread to use crc32().- */--#ifdef MAKECRCH-#  include <stdio.h>-#  ifndef DYNAMIC_CRC_TABLE-#    define DYNAMIC_CRC_TABLE-#  endif /* !DYNAMIC_CRC_TABLE */-#endif /* MAKECRCH */--#include "zutil.h"      /* for STDC and FAR definitions */--#define local static--/* Find a four-byte integer type for crc32_little() and crc32_big(). */-#ifndef NOBYFOUR-#  ifdef STDC           /* need ANSI C limits.h to determine sizes */-#    include <limits.h>-#    define BYFOUR-#    if (UINT_MAX == 0xffffffffUL)-       typedef unsigned int u4;-#    else-#      if (ULONG_MAX == 0xffffffffUL)-         typedef unsigned long u4;-#      else-#        if (USHRT_MAX == 0xffffffffUL)-           typedef unsigned short u4;-#        else-#          undef BYFOUR     /* can't find a four-byte integer type! */-#        endif-#      endif-#    endif-#  endif /* STDC */-#endif /* !NOBYFOUR */--/* Definitions for doing the crc four data bytes at a time. */-#ifdef BYFOUR-#  define REV(w) (((w)>>24)+(((w)>>8)&0xff00)+ \-                (((w)&0xff00)<<8)+(((w)&0xff)<<24))-   local unsigned long crc32_little OF((unsigned long,-                        const unsigned char FAR *, unsigned));-   local unsigned long crc32_big OF((unsigned long,-                        const unsigned char FAR *, unsigned));-#  define TBLS 8-#else-#  define TBLS 1-#endif /* BYFOUR */--/* Local functions for crc concatenation */-local unsigned long gf2_matrix_times OF((unsigned long *mat,-                                         unsigned long vec));-local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));--#ifdef DYNAMIC_CRC_TABLE--local volatile int crc_table_empty = 1;-local unsigned long FAR crc_table[TBLS][256];-local void make_crc_table OF((void));-#ifdef MAKECRCH-   local void write_table OF((FILE *, const unsigned long FAR *));-#endif /* MAKECRCH */-/*-  Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:-  x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.--  Polynomials over GF(2) are represented in binary, one bit per coefficient,-  with the lowest powers in the most significant bit.  Then adding polynomials-  is just exclusive-or, and multiplying a polynomial by x is a right shift by-  one.  If we call the above polynomial p, and represent a byte as the-  polynomial q, also with the lowest power in the most significant bit (so the-  byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,-  where a mod b means the remainder after dividing a by b.--  This calculation is done using the shift-register method of multiplying and-  taking the remainder.  The register is initialized to zero, and for each-  incoming bit, x^32 is added mod p to the register if the bit is a one (where-  x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by-  x (which is shifting right by one and adding x^32 mod p if the bit shifted-  out is a one).  We start with the highest power (least significant bit) of-  q and repeat for all eight bits of q.--  The first table is simply the CRC of all possible eight bit values.  This is-  all the information needed to generate CRCs on data a byte at a time for all-  combinations of CRC register values and incoming bytes.  The remaining tables-  allow for word-at-a-time CRC calculation for both big-endian and little--  endian machines, where a word is four bytes.-*/-local void make_crc_table()-{-    unsigned long c;-    int n, k;-    unsigned long poly;                 /* polynomial exclusive-or pattern */-    /* terms of polynomial defining this crc (except x^32): */-    static volatile int first = 1;      /* flag to limit concurrent making */-    static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};--    /* See if another task is already doing this (not thread-safe, but better-       than nothing -- significantly reduces duration of vulnerability in-       case the advice about DYNAMIC_CRC_TABLE is ignored) */-    if (first) {-        first = 0;--        /* make exclusive-or pattern from polynomial (0xedb88320UL) */-        poly = 0UL;-        for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++)-            poly |= 1UL << (31 - p[n]);--        /* generate a crc for every 8-bit value */-        for (n = 0; n < 256; n++) {-            c = (unsigned long)n;-            for (k = 0; k < 8; k++)-                c = c & 1 ? poly ^ (c >> 1) : c >> 1;-            crc_table[0][n] = c;-        }--#ifdef BYFOUR-        /* generate crc for each value followed by one, two, and three zeros,-           and then the byte reversal of those as well as the first table */-        for (n = 0; n < 256; n++) {-            c = crc_table[0][n];-            crc_table[4][n] = REV(c);-            for (k = 1; k < 4; k++) {-                c = crc_table[0][c & 0xff] ^ (c >> 8);-                crc_table[k][n] = c;-                crc_table[k + 4][n] = REV(c);-            }-        }-#endif /* BYFOUR */--        crc_table_empty = 0;-    }-    else {      /* not first */-        /* wait for the other guy to finish (not efficient, but rare) */-        while (crc_table_empty)-            ;-    }--#ifdef MAKECRCH-    /* write out CRC tables to crc32.h */-    {-        FILE *out;--        out = fopen("crc32.h", "w");-        if (out == NULL) return;-        fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");-        fprintf(out, " * Generated automatically by crc32.c\n */\n\n");-        fprintf(out, "local const unsigned long FAR ");-        fprintf(out, "crc_table[TBLS][256] =\n{\n  {\n");-        write_table(out, crc_table[0]);-#  ifdef BYFOUR-        fprintf(out, "#ifdef BYFOUR\n");-        for (k = 1; k < 8; k++) {-            fprintf(out, "  },\n  {\n");-            write_table(out, crc_table[k]);-        }-        fprintf(out, "#endif\n");-#  endif /* BYFOUR */-        fprintf(out, "  }\n};\n");-        fclose(out);-    }-#endif /* MAKECRCH */-}--#ifdef MAKECRCH-local void write_table(out, table)-    FILE *out;-    const unsigned long FAR *table;-{-    int n;--    for (n = 0; n < 256; n++)-        fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : "    ", table[n],-                n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));-}-#endif /* MAKECRCH */--#else /* !DYNAMIC_CRC_TABLE */-/* ========================================================================- * Tables of CRC-32s of all single-byte values, made by make_crc_table().- */-#include "crc32.h"-#endif /* DYNAMIC_CRC_TABLE */--/* =========================================================================- * This function can be used by asm versions of crc32()- */-const unsigned long FAR * ZEXPORT get_crc_table()-{-#ifdef DYNAMIC_CRC_TABLE-    if (crc_table_empty)-        make_crc_table();-#endif /* DYNAMIC_CRC_TABLE */-    return (const unsigned long FAR *)crc_table;-}--/* ========================================================================= */-#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)-#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1--/* ========================================================================= */-unsigned long ZEXPORT crc32(crc, buf, len)-    unsigned long crc;-    const unsigned char FAR *buf;-    unsigned len;-{-    if (buf == Z_NULL) return 0UL;--#ifdef DYNAMIC_CRC_TABLE-    if (crc_table_empty)-        make_crc_table();-#endif /* DYNAMIC_CRC_TABLE */--#ifdef BYFOUR-    if (sizeof(void *) == sizeof(ptrdiff_t)) {-        u4 endian;--        endian = 1;-        if (*((unsigned char *)(&endian)))-            return crc32_little(crc, buf, len);-        else-            return crc32_big(crc, buf, len);-    }-#endif /* BYFOUR */-    crc = crc ^ 0xffffffffUL;-    while (len >= 8) {-        DO8;-        len -= 8;-    }-    if (len) do {-        DO1;-    } while (--len);-    return crc ^ 0xffffffffUL;-}--#ifdef BYFOUR--/* ========================================================================= */-#define DOLIT4 c ^= *buf4++; \-        c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \-            crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]-#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4--/* ========================================================================= */-local unsigned long crc32_little(crc, buf, len)-    unsigned long crc;-    const unsigned char FAR *buf;-    unsigned len;-{-    register u4 c;-    register const u4 FAR *buf4;--    c = (u4)crc;-    c = ~c;-    while (len && ((ptrdiff_t)buf & 3)) {-        c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);-        len--;-    }--    buf4 = (const u4 FAR *)(const void FAR *)buf;-    while (len >= 32) {-        DOLIT32;-        len -= 32;-    }-    while (len >= 4) {-        DOLIT4;-        len -= 4;-    }-    buf = (const unsigned char FAR *)buf4;--    if (len) do {-        c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);-    } while (--len);-    c = ~c;-    return (unsigned long)c;-}--/* ========================================================================= */-#define DOBIG4 c ^= *++buf4; \-        c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \-            crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]-#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4--/* ========================================================================= */-local unsigned long crc32_big(crc, buf, len)-    unsigned long crc;-    const unsigned char FAR *buf;-    unsigned len;-{-    register u4 c;-    register const u4 FAR *buf4;--    c = REV((u4)crc);-    c = ~c;-    while (len && ((ptrdiff_t)buf & 3)) {-        c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);-        len--;-    }--    buf4 = (const u4 FAR *)(const void FAR *)buf;-    buf4--;-    while (len >= 32) {-        DOBIG32;-        len -= 32;-    }-    while (len >= 4) {-        DOBIG4;-        len -= 4;-    }-    buf4++;-    buf = (const unsigned char FAR *)buf4;--    if (len) do {-        c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);-    } while (--len);-    c = ~c;-    return (unsigned long)(REV(c));-}--#endif /* BYFOUR */--#define GF2_DIM 32      /* dimension of GF(2) vectors (length of CRC) */--/* ========================================================================= */-local unsigned long gf2_matrix_times(mat, vec)-    unsigned long *mat;-    unsigned long vec;-{-    unsigned long sum;--    sum = 0;-    while (vec) {-        if (vec & 1)-            sum ^= *mat;-        vec >>= 1;-        mat++;-    }-    return sum;-}--/* ========================================================================= */-local void gf2_matrix_square(square, mat)-    unsigned long *square;-    unsigned long *mat;-{-    int n;--    for (n = 0; n < GF2_DIM; n++)-        square[n] = gf2_matrix_times(mat, mat[n]);-}--/* ========================================================================= */-uLong ZEXPORT crc32_combine(crc1, crc2, len2)-    uLong crc1;-    uLong crc2;-    z_off_t len2;-{-    int n;-    unsigned long row;-    unsigned long even[GF2_DIM];    /* even-power-of-two zeros operator */-    unsigned long odd[GF2_DIM];     /* odd-power-of-two zeros operator */--    /* degenerate case */-    if (len2 == 0)-        return crc1;--    /* put operator for one zero bit in odd */-    odd[0] = 0xedb88320L;           /* CRC-32 polynomial */-    row = 1;-    for (n = 1; n < GF2_DIM; n++) {-        odd[n] = row;-        row <<= 1;-    }--    /* put operator for two zero bits in even */-    gf2_matrix_square(even, odd);--    /* put operator for four zero bits in odd */-    gf2_matrix_square(odd, even);--    /* apply len2 zeros to crc1 (first square will put the operator for one-       zero byte, eight zero bits, in even) */-    do {-        /* apply zeros operator for this bit of len2 */-        gf2_matrix_square(even, odd);-        if (len2 & 1)-            crc1 = gf2_matrix_times(even, crc1);-        len2 >>= 1;--        /* if no more bits set, then done */-        if (len2 == 0)-            break;--        /* another iteration of the loop with odd and even swapped */-        gf2_matrix_square(odd, even);-        if (len2 & 1)-            crc1 = gf2_matrix_times(odd, crc1);-        len2 >>= 1;--        /* if no more bits set, then done */-    } while (len2 != 0);--    /* return combined crc */-    crc1 ^= crc2;-    return crc1;-}
− cbits/zlib.h
@@ -1,1357 +0,0 @@-/* zlib.h -- interface of the 'zlib' general purpose compression library-  version 1.2.3, July 18th, 2005--  Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler--  This software is provided 'as-is', without any express or implied-  warranty.  In no event will the authors be held liable for any damages-  arising from the use of this software.--  Permission is granted to anyone to use this software for any purpose,-  including commercial applications, and to alter it and redistribute it-  freely, subject to the following restrictions:--  1. The origin of this software must not be misrepresented; you must not-     claim that you wrote the original software. If you use this software-     in a product, an acknowledgment in the product documentation would be-     appreciated but is not required.-  2. Altered source versions must be plainly marked as such, and must not be-     misrepresented as being the original software.-  3. This notice may not be removed or altered from any source distribution.--  Jean-loup Gailly        Mark Adler-  jloup@gzip.org          madler@alumni.caltech.edu---  The data format used by the zlib library is described by RFCs (Request for-  Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt-  (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).-*/--#ifndef ZLIB_H-#define ZLIB_H--#include "zconf.h"--#ifdef __cplusplus-extern "C" {-#endif--#define ZLIB_VERSION "1.2.3"-#define ZLIB_VERNUM 0x1230--/*-     The 'zlib' compression library provides in-memory compression and-  decompression functions, including integrity checks of the uncompressed-  data.  This version of the library supports only one compression method-  (deflation) but other algorithms will be added later and will have the same-  stream interface.--     Compression can be done in a single step if the buffers are large-  enough (for example if an input file is mmap'ed), or can be done by-  repeated calls of the compression function.  In the latter case, the-  application must provide more input and/or consume the output-  (providing more output space) before each call.--     The compressed data format used by default by the in-memory functions is-  the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped-  around a deflate stream, which is itself documented in RFC 1951.--     The library also supports reading and writing files in gzip (.gz) format-  with an interface similar to that of stdio using the functions that start-  with "gz".  The gzip format is different from the zlib format.  gzip is a-  gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.--     This library can optionally read and write gzip streams in memory as well.--     The zlib format was designed to be compact and fast for use in memory-  and on communications channels.  The gzip format was designed for single--  file compression on file systems, has a larger header than zlib to maintain-  directory information, and uses a different, slower check method than zlib.--     The library does not install any signal handler. The decoder checks-  the consistency of the compressed data, so the library should never-  crash even in case of corrupted input.-*/--typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));-typedef void   (*free_func)  OF((voidpf opaque, voidpf address));--struct internal_state;--typedef struct z_stream_s {-    Bytef    *next_in;  /* next input byte */-    uInt     avail_in;  /* number of bytes available at next_in */-    uLong    total_in;  /* total nb of input bytes read so far */--    Bytef    *next_out; /* next output byte should be put there */-    uInt     avail_out; /* remaining free space at next_out */-    uLong    total_out; /* total nb of bytes output so far */--    char     *msg;      /* last error message, NULL if no error */-    struct internal_state FAR *state; /* not visible by applications */--    alloc_func zalloc;  /* used to allocate the internal state */-    free_func  zfree;   /* used to free the internal state */-    voidpf     opaque;  /* private data object passed to zalloc and zfree */--    int     data_type;  /* best guess about the data type: binary or text */-    uLong   adler;      /* adler32 value of the uncompressed data */-    uLong   reserved;   /* reserved for future use */-} z_stream;--typedef z_stream FAR *z_streamp;--/*-     gzip header information passed to and from zlib routines.  See RFC 1952-  for more details on the meanings of these fields.-*/-typedef struct gz_header_s {-    int     text;       /* true if compressed data believed to be text */-    uLong   time;       /* modification time */-    int     xflags;     /* extra flags (not used when writing a gzip file) */-    int     os;         /* operating system */-    Bytef   *extra;     /* pointer to extra field or Z_NULL if none */-    uInt    extra_len;  /* extra field length (valid if extra != Z_NULL) */-    uInt    extra_max;  /* space at extra (only when reading header) */-    Bytef   *name;      /* pointer to zero-terminated file name or Z_NULL */-    uInt    name_max;   /* space at name (only when reading header) */-    Bytef   *comment;   /* pointer to zero-terminated comment or Z_NULL */-    uInt    comm_max;   /* space at comment (only when reading header) */-    int     hcrc;       /* true if there was or will be a header crc */-    int     done;       /* true when done reading gzip header (not used-                           when writing a gzip file) */-} gz_header;--typedef gz_header FAR *gz_headerp;--/*-   The application must update next_in and avail_in when avail_in has-   dropped to zero. It must update next_out and avail_out when avail_out-   has dropped to zero. The application must initialize zalloc, zfree and-   opaque before calling the init function. All other fields are set by the-   compression library and must not be updated by the application.--   The opaque value provided by the application will be passed as the first-   parameter for calls of zalloc and zfree. This can be useful for custom-   memory management. The compression library attaches no meaning to the-   opaque value.--   zalloc must return Z_NULL if there is not enough memory for the object.-   If zlib is used in a multi-threaded application, zalloc and zfree must be-   thread safe.--   On 16-bit systems, the functions zalloc and zfree must be able to allocate-   exactly 65536 bytes, but will not be required to allocate more than this-   if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,-   pointers returned by zalloc for objects of exactly 65536 bytes *must*-   have their offset normalized to zero. The default allocation function-   provided by this library ensures this (see zutil.c). To reduce memory-   requirements and avoid any allocation of 64K objects, at the expense of-   compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).--   The fields total_in and total_out can be used for statistics or-   progress reports. After compression, total_in holds the total size of-   the uncompressed data and may be saved for use in the decompressor-   (particularly if the decompressor wants to decompress everything in-   a single step).-*/--                        /* constants */--#define Z_NO_FLUSH      0-#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */-#define Z_SYNC_FLUSH    2-#define Z_FULL_FLUSH    3-#define Z_FINISH        4-#define Z_BLOCK         5-/* Allowed flush values; see deflate() and inflate() below for details */--#define Z_OK            0-#define Z_STREAM_END    1-#define Z_NEED_DICT     2-#define Z_ERRNO        (-1)-#define Z_STREAM_ERROR (-2)-#define Z_DATA_ERROR   (-3)-#define Z_MEM_ERROR    (-4)-#define Z_BUF_ERROR    (-5)-#define Z_VERSION_ERROR (-6)-/* Return codes for the compression/decompression functions. Negative- * values are errors, positive values are used for special but normal events.- */--#define Z_NO_COMPRESSION         0-#define Z_BEST_SPEED             1-#define Z_BEST_COMPRESSION       9-#define Z_DEFAULT_COMPRESSION  (-1)-/* compression levels */--#define Z_FILTERED            1-#define Z_HUFFMAN_ONLY        2-#define Z_RLE                 3-#define Z_FIXED               4-#define Z_DEFAULT_STRATEGY    0-/* compression strategy; see deflateInit2() below for details */--#define Z_BINARY   0-#define Z_TEXT     1-#define Z_ASCII    Z_TEXT   /* for compatibility with 1.2.2 and earlier */-#define Z_UNKNOWN  2-/* Possible values of the data_type field (though see inflate()) */--#define Z_DEFLATED   8-/* The deflate compression method (the only one supported in this version) */--#define Z_NULL  0  /* for initializing zalloc, zfree, opaque */--#define zlib_version zlibVersion()-/* for compatibility with versions < 1.0.2 */--                        /* basic functions */--ZEXTERN const char * ZEXPORT zlibVersion OF((void));-/* The application can compare zlibVersion and ZLIB_VERSION for consistency.-   If the first character differs, the library code actually used is-   not compatible with the zlib.h header file used by the application.-   This check is automatically made by deflateInit and inflateInit.- */--/*-ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));--     Initializes the internal stream state for compression. The fields-   zalloc, zfree and opaque must be initialized before by the caller.-   If zalloc and zfree are set to Z_NULL, deflateInit updates them to-   use default allocation functions.--     The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:-   1 gives best speed, 9 gives best compression, 0 gives no compression at-   all (the input data is simply copied a block at a time).-   Z_DEFAULT_COMPRESSION requests a default compromise between speed and-   compression (currently equivalent to level 6).--     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not-   enough memory, Z_STREAM_ERROR if level is not a valid compression level,-   Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible-   with the version assumed by the caller (ZLIB_VERSION).-   msg is set to null if there is no error message.  deflateInit does not-   perform any compression: this will be done by deflate().-*/---ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));-/*-    deflate compresses as much data as possible, and stops when the input-  buffer becomes empty or the output buffer becomes full. It may introduce some-  output latency (reading input without producing any output) except when-  forced to flush.--    The detailed semantics are as follows. deflate performs one or both of the-  following actions:--  - Compress more input starting at next_in and update next_in and avail_in-    accordingly. If not all input can be processed (because there is not-    enough room in the output buffer), next_in and avail_in are updated and-    processing will resume at this point for the next call of deflate().--  - Provide more output starting at next_out and update next_out and avail_out-    accordingly. This action is forced if the parameter flush is non zero.-    Forcing flush frequently degrades the compression ratio, so this parameter-    should be set only when necessary (in interactive applications).-    Some output may be provided even if flush is not set.--  Before the call of deflate(), the application should ensure that at least-  one of the actions is possible, by providing more input and/or consuming-  more output, and updating avail_in or avail_out accordingly; avail_out-  should never be zero before the call. The application can consume the-  compressed output when it wants, for example when the output buffer is full-  (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK-  and with zero avail_out, it must be called again after making room in the-  output buffer because there might be more output pending.--    Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to-  decide how much data to accumualte before producing output, in order to-  maximize compression.--    If the parameter flush is set to Z_SYNC_FLUSH, all pending output is-  flushed to the output buffer and the output is aligned on a byte boundary, so-  that the decompressor can get all input data available so far. (In particular-  avail_in is zero after the call if enough output space has been provided-  before the call.)  Flushing may degrade compression for some compression-  algorithms and so it should be used only when necessary.--    If flush is set to Z_FULL_FLUSH, all output is flushed as with-  Z_SYNC_FLUSH, and the compression state is reset so that decompression can-  restart from this point if previous compressed data has been damaged or if-  random access is desired. Using Z_FULL_FLUSH too often can seriously degrade-  compression.--    If deflate returns with avail_out == 0, this function must be called again-  with the same value of the flush parameter and more output space (updated-  avail_out), until the flush is complete (deflate returns with non-zero-  avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that-  avail_out is greater than six to avoid repeated flush markers due to-  avail_out == 0 on return.--    If the parameter flush is set to Z_FINISH, pending input is processed,-  pending output is flushed and deflate returns with Z_STREAM_END if there-  was enough output space; if deflate returns with Z_OK, this function must be-  called again with Z_FINISH and more output space (updated avail_out) but no-  more input data, until it returns with Z_STREAM_END or an error. After-  deflate has returned Z_STREAM_END, the only possible operations on the-  stream are deflateReset or deflateEnd.--    Z_FINISH can be used immediately after deflateInit if all the compression-  is to be done in a single step. In this case, avail_out must be at least-  the value returned by deflateBound (see below). If deflate does not return-  Z_STREAM_END, then it must be called again as described above.--    deflate() sets strm->adler to the adler32 checksum of all input read-  so far (that is, total_in bytes).--    deflate() may update strm->data_type if it can make a good guess about-  the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered-  binary. This field is only for information purposes and does not affect-  the compression algorithm in any manner.--    deflate() returns Z_OK if some progress has been made (more input-  processed or more output produced), Z_STREAM_END if all input has been-  consumed and all output has been produced (only when flush is set to-  Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example-  if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible-  (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not-  fatal, and deflate() can be called again with more input and more output-  space to continue compressing.-*/---ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));-/*-     All dynamically allocated data structures for this stream are freed.-   This function discards any unprocessed input and does not flush any-   pending output.--     deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the-   stream state was inconsistent, Z_DATA_ERROR if the stream was freed-   prematurely (some input or output was discarded). In the error case,-   msg may be set but then points to a static string (which must not be-   deallocated).-*/---/*-ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));--     Initializes the internal stream state for decompression. The fields-   next_in, avail_in, zalloc, zfree and opaque must be initialized before by-   the caller. If next_in is not Z_NULL and avail_in is large enough (the exact-   value depends on the compression method), inflateInit determines the-   compression method from the zlib header and allocates all data structures-   accordingly; otherwise the allocation will be deferred to the first call of-   inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to-   use default allocation functions.--     inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough-   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the-   version assumed by the caller.  msg is set to null if there is no error-   message. inflateInit does not perform any decompression apart from reading-   the zlib header if present: this will be done by inflate().  (So next_in and-   avail_in may be modified, but next_out and avail_out are unchanged.)-*/---ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));-/*-    inflate decompresses as much data as possible, and stops when the input-  buffer becomes empty or the output buffer becomes full. It may introduce-  some output latency (reading input without producing any output) except when-  forced to flush.--  The detailed semantics are as follows. inflate performs one or both of the-  following actions:--  - Decompress more input starting at next_in and update next_in and avail_in-    accordingly. If not all input can be processed (because there is not-    enough room in the output buffer), next_in is updated and processing-    will resume at this point for the next call of inflate().--  - Provide more output starting at next_out and update next_out and avail_out-    accordingly.  inflate() provides as much output as possible, until there-    is no more input data or no more space in the output buffer (see below-    about the flush parameter).--  Before the call of inflate(), the application should ensure that at least-  one of the actions is possible, by providing more input and/or consuming-  more output, and updating the next_* and avail_* values accordingly.-  The application can consume the uncompressed output when it wants, for-  example when the output buffer is full (avail_out == 0), or after each-  call of inflate(). If inflate returns Z_OK and with zero avail_out, it-  must be called again after making room in the output buffer because there-  might be more output pending.--    The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,-  Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much-  output as possible to the output buffer. Z_BLOCK requests that inflate() stop-  if and when it gets to the next deflate block boundary. When decoding the-  zlib or gzip format, this will cause inflate() to return immediately after-  the header and before the first block. When doing a raw inflate, inflate()-  will go ahead and process the first block, and will return when it gets to-  the end of that block, or when it runs out of data.--    The Z_BLOCK option assists in appending to or combining deflate streams.-  Also to assist in this, on return inflate() will set strm->data_type to the-  number of unused bits in the last byte taken from strm->next_in, plus 64-  if inflate() is currently decoding the last block in the deflate stream,-  plus 128 if inflate() returned immediately after decoding an end-of-block-  code or decoding the complete header up to just before the first byte of the-  deflate stream. The end-of-block will not be indicated until all of the-  uncompressed data from that block has been written to strm->next_out.  The-  number of unused bits may in general be greater than seven, except when-  bit 7 of data_type is set, in which case the number of unused bits will be-  less than eight.--    inflate() should normally be called until it returns Z_STREAM_END or an-  error. However if all decompression is to be performed in a single step-  (a single call of inflate), the parameter flush should be set to-  Z_FINISH. In this case all pending input is processed and all pending-  output is flushed; avail_out must be large enough to hold all the-  uncompressed data. (The size of the uncompressed data may have been saved-  by the compressor for this purpose.) The next operation on this stream must-  be inflateEnd to deallocate the decompression state. The use of Z_FINISH-  is never required, but can be used to inform inflate that a faster approach-  may be used for the single inflate() call.--     In this implementation, inflate() always flushes as much output as-  possible to the output buffer, and always uses the faster approach on the-  first call. So the only effect of the flush parameter in this implementation-  is on the return value of inflate(), as noted below, or when it returns early-  because Z_BLOCK is used.--     If a preset dictionary is needed after this call (see inflateSetDictionary-  below), inflate sets strm->adler to the adler32 checksum of the dictionary-  chosen by the compressor and returns Z_NEED_DICT; otherwise it sets-  strm->adler to the adler32 checksum of all output produced so far (that is,-  total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described-  below. At the end of the stream, inflate() checks that its computed adler32-  checksum is equal to that saved by the compressor and returns Z_STREAM_END-  only if the checksum is correct.--    inflate() will decompress and check either zlib-wrapped or gzip-wrapped-  deflate data.  The header type is detected automatically.  Any information-  contained in the gzip header is not retained, so applications that need that-  information should instead use raw inflate, see inflateInit2() below, or-  inflateBack() and perform their own processing of the gzip header and-  trailer.--    inflate() returns Z_OK if some progress has been made (more input processed-  or more output produced), Z_STREAM_END if the end of the compressed data has-  been reached and all uncompressed output has been produced, Z_NEED_DICT if a-  preset dictionary is needed at this point, Z_DATA_ERROR if the input data was-  corrupted (input stream not conforming to the zlib format or incorrect check-  value), Z_STREAM_ERROR if the stream structure was inconsistent (for example-  if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,-  Z_BUF_ERROR if no progress is possible or if there was not enough room in the-  output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and-  inflate() can be called again with more input and more output space to-  continue decompressing. If Z_DATA_ERROR is returned, the application may then-  call inflateSync() to look for a good compression block if a partial recovery-  of the data is desired.-*/---ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));-/*-     All dynamically allocated data structures for this stream are freed.-   This function discards any unprocessed input and does not flush any-   pending output.--     inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state-   was inconsistent. In the error case, msg may be set but then points to a-   static string (which must not be deallocated).-*/--                        /* Advanced functions */--/*-    The following functions are needed only in some special applications.-*/--/*-ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,-                                     int  level,-                                     int  method,-                                     int  windowBits,-                                     int  memLevel,-                                     int  strategy));--     This is another version of deflateInit with more compression options. The-   fields next_in, zalloc, zfree and opaque must be initialized before by-   the caller.--     The method parameter is the compression method. It must be Z_DEFLATED in-   this version of the library.--     The windowBits parameter is the base two logarithm of the window size-   (the size of the history buffer). It should be in the range 8..15 for this-   version of the library. Larger values of this parameter result in better-   compression at the expense of memory usage. The default value is 15 if-   deflateInit is used instead.--     windowBits can also be -8..-15 for raw deflate. In this case, -windowBits-   determines the window size. deflate() will then generate raw deflate data-   with no zlib header or trailer, and will not compute an adler32 check value.--     windowBits can also be greater than 15 for optional gzip encoding. Add-   16 to windowBits to write a simple gzip header and trailer around the-   compressed data instead of a zlib wrapper. The gzip header will have no-   file name, no extra data, no comment, no modification time (set to zero),-   no header crc, and the operating system will be set to 255 (unknown).  If a-   gzip stream is being written, strm->adler is a crc32 instead of an adler32.--     The memLevel parameter specifies how much memory should be allocated-   for the internal compression state. memLevel=1 uses minimum memory but-   is slow and reduces compression ratio; memLevel=9 uses maximum memory-   for optimal speed. The default value is 8. See zconf.h for total memory-   usage as a function of windowBits and memLevel.--     The strategy parameter is used to tune the compression algorithm. Use the-   value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a-   filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no-   string match), or Z_RLE to limit match distances to one (run-length-   encoding). Filtered data consists mostly of small values with a somewhat-   random distribution. In this case, the compression algorithm is tuned to-   compress them better. The effect of Z_FILTERED is to force more Huffman-   coding and less string matching; it is somewhat intermediate between-   Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as-   Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy-   parameter only affects the compression ratio but not the correctness of the-   compressed output even if it is not set appropriately.  Z_FIXED prevents the-   use of dynamic Huffman codes, allowing for a simpler decoder for special-   applications.--      deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough-   memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid-   method). msg is set to null if there is no error message.  deflateInit2 does-   not perform any compression: this will be done by deflate().-*/--ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,-                                             const Bytef *dictionary,-                                             uInt  dictLength));-/*-     Initializes the compression dictionary from the given byte sequence-   without producing any compressed output. This function must be called-   immediately after deflateInit, deflateInit2 or deflateReset, before any-   call of deflate. The compressor and decompressor must use exactly the same-   dictionary (see inflateSetDictionary).--     The dictionary should consist of strings (byte sequences) that are likely-   to be encountered later in the data to be compressed, with the most commonly-   used strings preferably put towards the end of the dictionary. Using a-   dictionary is most useful when the data to be compressed is short and can be-   predicted with good accuracy; the data can then be compressed better than-   with the default empty dictionary.--     Depending on the size of the compression data structures selected by-   deflateInit or deflateInit2, a part of the dictionary may in effect be-   discarded, for example if the dictionary is larger than the window size in-   deflate or deflate2. Thus the strings most likely to be useful should be-   put at the end of the dictionary, not at the front. In addition, the-   current implementation of deflate will use at most the window size minus-   262 bytes of the provided dictionary.--     Upon return of this function, strm->adler is set to the adler32 value-   of the dictionary; the decompressor may later use this value to determine-   which dictionary has been used by the compressor. (The adler32 value-   applies to the whole dictionary even if only a subset of the dictionary is-   actually used by the compressor.) If a raw deflate was requested, then the-   adler32 value is not computed and strm->adler is not set.--     deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a-   parameter is invalid (such as NULL dictionary) or the stream state is-   inconsistent (for example if deflate has already been called for this stream-   or if the compression method is bsort). deflateSetDictionary does not-   perform any compression: this will be done by deflate().-*/--ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,-                                    z_streamp source));-/*-     Sets the destination stream as a complete copy of the source stream.--     This function can be useful when several compression strategies will be-   tried, for example when there are several ways of pre-processing the input-   data with a filter. The streams that will be discarded should then be freed-   by calling deflateEnd.  Note that deflateCopy duplicates the internal-   compression state which can be quite large, so this strategy is slow and-   can consume lots of memory.--     deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not-   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent-   (such as zalloc being NULL). msg is left unchanged in both source and-   destination.-*/--ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));-/*-     This function is equivalent to deflateEnd followed by deflateInit,-   but does not free and reallocate all the internal compression state.-   The stream will keep the same compression level and any other attributes-   that may have been set by deflateInit2.--      deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source-   stream state was inconsistent (such as zalloc or state being NULL).-*/--ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,-                                      int level,-                                      int strategy));-/*-     Dynamically update the compression level and compression strategy.  The-   interpretation of level and strategy is as in deflateInit2.  This can be-   used to switch between compression and straight copy of the input data, or-   to switch to a different kind of input data requiring a different-   strategy. If the compression level is changed, the input available so far-   is compressed with the old level (and may be flushed); the new level will-   take effect only at the next call of deflate().--     Before the call of deflateParams, the stream state must be set as for-   a call of deflate(), since the currently available input may have to-   be compressed and flushed. In particular, strm->avail_out must be non-zero.--     deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source-   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR-   if strm->avail_out was zero.-*/--ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,-                                    int good_length,-                                    int max_lazy,-                                    int nice_length,-                                    int max_chain));-/*-     Fine tune deflate's internal compression parameters.  This should only be-   used by someone who understands the algorithm used by zlib's deflate for-   searching for the best matching string, and even then only by the most-   fanatic optimizer trying to squeeze out the last compressed bit for their-   specific input data.  Read the deflate.c source code for the meaning of the-   max_lazy, good_length, nice_length, and max_chain parameters.--     deflateTune() can be called after deflateInit() or deflateInit2(), and-   returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.- */--ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,-                                       uLong sourceLen));-/*-     deflateBound() returns an upper bound on the compressed size after-   deflation of sourceLen bytes.  It must be called after deflateInit()-   or deflateInit2().  This would be used to allocate an output buffer-   for deflation in a single pass, and so would be called before deflate().-*/--ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,-                                     int bits,-                                     int value));-/*-     deflatePrime() inserts bits in the deflate output stream.  The intent-  is that this function is used to start off the deflate output with the-  bits leftover from a previous deflate stream when appending to it.  As such,-  this function can only be used for raw deflate, and must be used before the-  first deflate() call after a deflateInit2() or deflateReset().  bits must be-  less than or equal to 16, and that many of the least significant bits of-  value will be inserted in the output.--      deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source-   stream state was inconsistent.-*/--ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,-                                         gz_headerp head));-/*-      deflateSetHeader() provides gzip header information for when a gzip-   stream is requested by deflateInit2().  deflateSetHeader() may be called-   after deflateInit2() or deflateReset() and before the first call of-   deflate().  The text, time, os, extra field, name, and comment information-   in the provided gz_header structure are written to the gzip header (xflag is-   ignored -- the extra flags are set according to the compression level).  The-   caller must assure that, if not Z_NULL, name and comment are terminated with-   a zero byte, and that if extra is not Z_NULL, that extra_len bytes are-   available there.  If hcrc is true, a gzip header crc is included.  Note that-   the current versions of the command-line version of gzip (up through version-   1.3.x) do not support header crc's, and will report that it is a "multi-part-   gzip file" and give up.--      If deflateSetHeader is not used, the default gzip header has text false,-   the time set to zero, and os set to 255, with no extra, name, or comment-   fields.  The gzip header is returned to the default state by deflateReset().--      deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source-   stream state was inconsistent.-*/--/*-ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,-                                     int  windowBits));--     This is another version of inflateInit with an extra parameter. The-   fields next_in, avail_in, zalloc, zfree and opaque must be initialized-   before by the caller.--     The windowBits parameter is the base two logarithm of the maximum window-   size (the size of the history buffer).  It should be in the range 8..15 for-   this version of the library. The default value is 15 if inflateInit is used-   instead. windowBits must be greater than or equal to the windowBits value-   provided to deflateInit2() while compressing, or it must be equal to 15 if-   deflateInit2() was not used. If a compressed stream with a larger window-   size is given as input, inflate() will return with the error code-   Z_DATA_ERROR instead of trying to allocate a larger window.--     windowBits can also be -8..-15 for raw inflate. In this case, -windowBits-   determines the window size. inflate() will then process raw deflate data,-   not looking for a zlib or gzip header, not generating a check value, and not-   looking for any check values for comparison at the end of the stream. This-   is for use with other formats that use the deflate compressed data format-   such as zip.  Those formats provide their own check values. If a custom-   format is developed using the raw deflate format for compressed data, it is-   recommended that a check value such as an adler32 or a crc32 be applied to-   the uncompressed data as is done in the zlib, gzip, and zip formats.  For-   most applications, the zlib format should be used as is. Note that comments-   above on the use in deflateInit2() applies to the magnitude of windowBits.--     windowBits can also be greater than 15 for optional gzip decoding. Add-   32 to windowBits to enable zlib and gzip decoding with automatic header-   detection, or add 16 to decode only the gzip format (the zlib format will-   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is-   a crc32 instead of an adler32.--     inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough-   memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg-   is set to null if there is no error message.  inflateInit2 does not perform-   any decompression apart from reading the zlib header if present: this will-   be done by inflate(). (So next_in and avail_in may be modified, but next_out-   and avail_out are unchanged.)-*/--ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,-                                             const Bytef *dictionary,-                                             uInt  dictLength));-/*-     Initializes the decompression dictionary from the given uncompressed byte-   sequence. This function must be called immediately after a call of inflate,-   if that call returned Z_NEED_DICT. The dictionary chosen by the compressor-   can be determined from the adler32 value returned by that call of inflate.-   The compressor and decompressor must use exactly the same dictionary (see-   deflateSetDictionary).  For raw inflate, this function can be called-   immediately after inflateInit2() or inflateReset() and before any call of-   inflate() to set the dictionary.  The application must insure that the-   dictionary that was used for compression is provided.--     inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a-   parameter is invalid (such as NULL dictionary) or the stream state is-   inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the-   expected one (incorrect adler32 value). inflateSetDictionary does not-   perform any decompression: this will be done by subsequent calls of-   inflate().-*/--ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));-/*-    Skips invalid compressed data until a full flush point (see above the-  description of deflate with Z_FULL_FLUSH) can be found, or until all-  available input is skipped. No output is provided.--    inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR-  if no more input was provided, Z_DATA_ERROR if no flush point has been found,-  or Z_STREAM_ERROR if the stream structure was inconsistent. In the success-  case, the application may save the current current value of total_in which-  indicates where valid compressed data was found. In the error case, the-  application may repeatedly call inflateSync, providing more input each time,-  until success or end of the input data.-*/--ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,-                                    z_streamp source));-/*-     Sets the destination stream as a complete copy of the source stream.--     This function can be useful when randomly accessing a large stream.  The-   first pass through the stream can periodically record the inflate state,-   allowing restarting inflate at those points when randomly accessing the-   stream.--     inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not-   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent-   (such as zalloc being NULL). msg is left unchanged in both source and-   destination.-*/--ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));-/*-     This function is equivalent to inflateEnd followed by inflateInit,-   but does not free and reallocate all the internal decompression state.-   The stream will keep attributes that may have been set by inflateInit2.--      inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source-   stream state was inconsistent (such as zalloc or state being NULL).-*/--ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,-                                     int bits,-                                     int value));-/*-     This function inserts bits in the inflate input stream.  The intent is-  that this function is used to start inflating at a bit position in the-  middle of a byte.  The provided bits will be used before any bytes are used-  from next_in.  This function should only be used with raw inflate, and-  should be used before the first inflate() call after inflateInit2() or-  inflateReset().  bits must be less than or equal to 16, and that many of the-  least significant bits of value will be inserted in the input.--      inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source-   stream state was inconsistent.-*/--ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,-                                         gz_headerp head));-/*-      inflateGetHeader() requests that gzip header information be stored in the-   provided gz_header structure.  inflateGetHeader() may be called after-   inflateInit2() or inflateReset(), and before the first call of inflate().-   As inflate() processes the gzip stream, head->done is zero until the header-   is completed, at which time head->done is set to one.  If a zlib stream is-   being decoded, then head->done is set to -1 to indicate that there will be-   no gzip header information forthcoming.  Note that Z_BLOCK can be used to-   force inflate() to return immediately after header processing is complete-   and before any actual data is decompressed.--      The text, time, xflags, and os fields are filled in with the gzip header-   contents.  hcrc is set to true if there is a header CRC.  (The header CRC-   was valid if done is set to one.)  If extra is not Z_NULL, then extra_max-   contains the maximum number of bytes to write to extra.  Once done is true,-   extra_len contains the actual extra field length, and extra contains the-   extra field, or that field truncated if extra_max is less than extra_len.-   If name is not Z_NULL, then up to name_max characters are written there,-   terminated with a zero unless the length is greater than name_max.  If-   comment is not Z_NULL, then up to comm_max characters are written there,-   terminated with a zero unless the length is greater than comm_max.  When-   any of extra, name, or comment are not Z_NULL and the respective field is-   not present in the header, then that field is set to Z_NULL to signal its-   absence.  This allows the use of deflateSetHeader() with the returned-   structure to duplicate the header.  However if those fields are set to-   allocated memory, then the application will need to save those pointers-   elsewhere so that they can be eventually freed.--      If inflateGetHeader is not used, then the header information is simply-   discarded.  The header is always checked for validity, including the header-   CRC if present.  inflateReset() will reset the process to discard the header-   information.  The application would need to call inflateGetHeader() again to-   retrieve the header from the next gzip stream.--      inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source-   stream state was inconsistent.-*/--/*-ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,-                                        unsigned char FAR *window));--     Initialize the internal stream state for decompression using inflateBack()-   calls.  The fields zalloc, zfree and opaque in strm must be initialized-   before the call.  If zalloc and zfree are Z_NULL, then the default library--   derived memory allocation routines are used.  windowBits is the base two-   logarithm of the window size, in the range 8..15.  window is a caller-   supplied buffer of that size.  Except for special applications where it is-   assured that deflate was used with small window sizes, windowBits must be 15-   and a 32K byte window must be supplied to be able to decompress general-   deflate streams.--     See inflateBack() for the usage of these routines.--     inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of-   the paramaters are invalid, Z_MEM_ERROR if the internal state could not-   be allocated, or Z_VERSION_ERROR if the version of the library does not-   match the version of the header file.-*/--typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));-typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));--ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,-                                    in_func in, void FAR *in_desc,-                                    out_func out, void FAR *out_desc));-/*-     inflateBack() does a raw inflate with a single call using a call-back-   interface for input and output.  This is more efficient than inflate() for-   file i/o applications in that it avoids copying between the output and the-   sliding window by simply making the window itself the output buffer.  This-   function trusts the application to not change the output buffer passed by-   the output function, at least until inflateBack() returns.--     inflateBackInit() must be called first to allocate the internal state-   and to initialize the state with the user-provided window buffer.-   inflateBack() may then be used multiple times to inflate a complete, raw-   deflate stream with each call.  inflateBackEnd() is then called to free-   the allocated state.--     A raw deflate stream is one with no zlib or gzip header or trailer.-   This routine would normally be used in a utility that reads zip or gzip-   files and writes out uncompressed files.  The utility would decode the-   header and process the trailer on its own, hence this routine expects-   only the raw deflate stream to decompress.  This is different from the-   normal behavior of inflate(), which expects either a zlib or gzip header and-   trailer around the deflate stream.--     inflateBack() uses two subroutines supplied by the caller that are then-   called by inflateBack() for input and output.  inflateBack() calls those-   routines until it reads a complete deflate stream and writes out all of the-   uncompressed data, or until it encounters an error.  The function's-   parameters and return types are defined above in the in_func and out_func-   typedefs.  inflateBack() will call in(in_desc, &buf) which should return the-   number of bytes of provided input, and a pointer to that input in buf.  If-   there is no input available, in() must return zero--buf is ignored in that-   case--and inflateBack() will return a buffer error.  inflateBack() will call-   out(out_desc, buf, len) to write the uncompressed data buf[0..len-1].  out()-   should return zero on success, or non-zero on failure.  If out() returns-   non-zero, inflateBack() will return with an error.  Neither in() nor out()-   are permitted to change the contents of the window provided to-   inflateBackInit(), which is also the buffer that out() uses to write from.-   The length written by out() will be at most the window size.  Any non-zero-   amount of input may be provided by in().--     For convenience, inflateBack() can be provided input on the first call by-   setting strm->next_in and strm->avail_in.  If that input is exhausted, then-   in() will be called.  Therefore strm->next_in must be initialized before-   calling inflateBack().  If strm->next_in is Z_NULL, then in() will be called-   immediately for input.  If strm->next_in is not Z_NULL, then strm->avail_in-   must also be initialized, and then if strm->avail_in is not zero, input will-   initially be taken from strm->next_in[0 .. strm->avail_in - 1].--     The in_desc and out_desc parameters of inflateBack() is passed as the-   first parameter of in() and out() respectively when they are called.  These-   descriptors can be optionally used to pass any information that the caller--   supplied in() and out() functions need to do their job.--     On return, inflateBack() will set strm->next_in and strm->avail_in to-   pass back any unused input that was provided by the last in() call.  The-   return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR-   if in() or out() returned an error, Z_DATA_ERROR if there was a format-   error in the deflate stream (in which case strm->msg is set to indicate the-   nature of the error), or Z_STREAM_ERROR if the stream was not properly-   initialized.  In the case of Z_BUF_ERROR, an input or output error can be-   distinguished using strm->next_in which will be Z_NULL only if in() returned-   an error.  If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to-   out() returning non-zero.  (in() will always be called before out(), so-   strm->next_in is assured to be defined if out() returns non-zero.)  Note-   that inflateBack() cannot return Z_OK.-*/--ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));-/*-     All memory allocated by inflateBackInit() is freed.--     inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream-   state was inconsistent.-*/--ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));-/* Return flags indicating compile-time options.--    Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:-     1.0: size of uInt-     3.2: size of uLong-     5.4: size of voidpf (pointer)-     7.6: size of z_off_t--    Compiler, assembler, and debug options:-     8: DEBUG-     9: ASMV or ASMINF -- use ASM code-     10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention-     11: 0 (reserved)--    One-time table building (smaller code, but not thread-safe if true):-     12: BUILDFIXED -- build static block decoding tables when needed-     13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed-     14,15: 0 (reserved)--    Library content (indicates missing functionality):-     16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking-                          deflate code when not needed)-     17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect-                    and decode gzip streams (to avoid linking crc code)-     18-19: 0 (reserved)--    Operation variations (changes in library functionality):-     20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate-     21: FASTEST -- deflate algorithm with only one, lowest compression level-     22,23: 0 (reserved)--    The sprintf variant used by gzprintf (zero is best):-     24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format-     25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure!-     26: 0 = returns value, 1 = void -- 1 means inferred string length returned--    Remainder:-     27-31: 0 (reserved)- */---                        /* utility functions */--/*-     The following utility functions are implemented on top of the-   basic stream-oriented functions. To simplify the interface, some-   default options are assumed (compression level and memory usage,-   standard memory allocation functions). The source code of these-   utility functions can easily be modified if you need special options.-*/--ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,-                                 const Bytef *source, uLong sourceLen));-/*-     Compresses the source buffer into the destination buffer.  sourceLen is-   the byte length of the source buffer. Upon entry, destLen is the total-   size of the destination buffer, which must be at least the value returned-   by compressBound(sourceLen). Upon exit, destLen is the actual size of the-   compressed buffer.-     This function can be used to compress a whole file at once if the-   input file is mmap'ed.-     compress returns Z_OK if success, Z_MEM_ERROR if there was not-   enough memory, Z_BUF_ERROR if there was not enough room in the output-   buffer.-*/--ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,-                                  const Bytef *source, uLong sourceLen,-                                  int level));-/*-     Compresses the source buffer into the destination buffer. The level-   parameter has the same meaning as in deflateInit.  sourceLen is the byte-   length of the source buffer. Upon entry, destLen is the total size of the-   destination buffer, which must be at least the value returned by-   compressBound(sourceLen). Upon exit, destLen is the actual size of the-   compressed buffer.--     compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough-   memory, Z_BUF_ERROR if there was not enough room in the output buffer,-   Z_STREAM_ERROR if the level parameter is invalid.-*/--ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));-/*-     compressBound() returns an upper bound on the compressed size after-   compress() or compress2() on sourceLen bytes.  It would be used before-   a compress() or compress2() call to allocate the destination buffer.-*/--ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,-                                   const Bytef *source, uLong sourceLen));-/*-     Decompresses the source buffer into the destination buffer.  sourceLen is-   the byte length of the source buffer. Upon entry, destLen is the total-   size of the destination buffer, which must be large enough to hold the-   entire uncompressed data. (The size of the uncompressed data must have-   been saved previously by the compressor and transmitted to the decompressor-   by some mechanism outside the scope of this compression library.)-   Upon exit, destLen is the actual size of the compressed buffer.-     This function can be used to decompress a whole file at once if the-   input file is mmap'ed.--     uncompress returns Z_OK if success, Z_MEM_ERROR if there was not-   enough memory, Z_BUF_ERROR if there was not enough room in the output-   buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete.-*/---typedef voidp gzFile;--ZEXTERN gzFile ZEXPORT gzopen  OF((const char *path, const char *mode));-/*-     Opens a gzip (.gz) file for reading or writing. The mode parameter-   is as in fopen ("rb" or "wb") but can also include a compression level-   ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for-   Huffman only compression as in "wb1h", or 'R' for run-length encoding-   as in "wb1R". (See the description of deflateInit2 for more information-   about the strategy parameter.)--     gzopen can be used to read a file which is not in gzip format; in this-   case gzread will directly read from the file without decompression.--     gzopen returns NULL if the file could not be opened or if there was-   insufficient memory to allocate the (de)compression state; errno-   can be checked to distinguish the two cases (if errno is zero, the-   zlib error is Z_MEM_ERROR).  */--ZEXTERN gzFile ZEXPORT gzdopen  OF((int fd, const char *mode));-/*-     gzdopen() associates a gzFile with the file descriptor fd.  File-   descriptors are obtained from calls like open, dup, creat, pipe or-   fileno (in the file has been previously opened with fopen).-   The mode parameter is as in gzopen.-     The next call of gzclose on the returned gzFile will also close the-   file descriptor fd, just like fclose(fdopen(fd), mode) closes the file-   descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).-     gzdopen returns NULL if there was insufficient memory to allocate-   the (de)compression state.-*/--ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));-/*-     Dynamically update the compression level or strategy. See the description-   of deflateInit2 for the meaning of these parameters.-     gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not-   opened for writing.-*/--ZEXTERN int ZEXPORT    gzread  OF((gzFile file, voidp buf, unsigned len));-/*-     Reads the given number of uncompressed bytes from the compressed file.-   If the input file was not in gzip format, gzread copies the given number-   of bytes into the buffer.-     gzread returns the number of uncompressed bytes actually read (0 for-   end of file, -1 for error). */--ZEXTERN int ZEXPORT    gzwrite OF((gzFile file,-                                   voidpc buf, unsigned len));-/*-     Writes the given number of uncompressed bytes into the compressed file.-   gzwrite returns the number of uncompressed bytes actually written-   (0 in case of error).-*/--ZEXTERN int ZEXPORTVA   gzprintf OF((gzFile file, const char *format, ...));-/*-     Converts, formats, and writes the args to the compressed file under-   control of the format string, as in fprintf. gzprintf returns the number of-   uncompressed bytes actually written (0 in case of error).  The number of-   uncompressed bytes written is limited to 4095. The caller should assure that-   this limit is not exceeded. If it is exceeded, then gzprintf() will return-   return an error (0) with nothing written. In this case, there may also be a-   buffer overflow with unpredictable consequences, which is possible only if-   zlib was compiled with the insecure functions sprintf() or vsprintf()-   because the secure snprintf() or vsnprintf() functions were not available.-*/--ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));-/*-      Writes the given null-terminated string to the compressed file, excluding-   the terminating null character.-      gzputs returns the number of characters written, or -1 in case of error.-*/--ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));-/*-      Reads bytes from the compressed file until len-1 characters are read, or-   a newline character is read and transferred to buf, or an end-of-file-   condition is encountered.  The string is then terminated with a null-   character.-      gzgets returns buf, or Z_NULL in case of error.-*/--ZEXTERN int ZEXPORT    gzputc OF((gzFile file, int c));-/*-      Writes c, converted to an unsigned char, into the compressed file.-   gzputc returns the value that was written, or -1 in case of error.-*/--ZEXTERN int ZEXPORT    gzgetc OF((gzFile file));-/*-      Reads one byte from the compressed file. gzgetc returns this byte-   or -1 in case of end of file or error.-*/--ZEXTERN int ZEXPORT    gzungetc OF((int c, gzFile file));-/*-      Push one character back onto the stream to be read again later.-   Only one character of push-back is allowed.  gzungetc() returns the-   character pushed, or -1 on failure.  gzungetc() will fail if a-   character has been pushed but not read yet, or if c is -1. The pushed-   character will be discarded if the stream is repositioned with gzseek()-   or gzrewind().-*/--ZEXTERN int ZEXPORT    gzflush OF((gzFile file, int flush));-/*-     Flushes all pending output into the compressed file. The parameter-   flush is as in the deflate() function. The return value is the zlib-   error number (see function gzerror below). gzflush returns Z_OK if-   the flush parameter is Z_FINISH and all output could be flushed.-     gzflush should be called only when strictly necessary because it can-   degrade compression.-*/--ZEXTERN z_off_t ZEXPORT    gzseek OF((gzFile file,-                                      z_off_t offset, int whence));-/*-      Sets the starting position for the next gzread or gzwrite on the-   given compressed file. The offset represents a number of bytes in the-   uncompressed data stream. The whence parameter is defined as in lseek(2);-   the value SEEK_END is not supported.-     If the file is opened for reading, this function is emulated but can be-   extremely slow. If the file is opened for writing, only forward seeks are-   supported; gzseek then compresses a sequence of zeroes up to the new-   starting position.--      gzseek returns the resulting offset location as measured in bytes from-   the beginning of the uncompressed stream, or -1 in case of error, in-   particular if the file is opened for writing and the new starting position-   would be before the current position.-*/--ZEXTERN int ZEXPORT    gzrewind OF((gzFile file));-/*-     Rewinds the given file. This function is supported only for reading.--   gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)-*/--ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));-/*-     Returns the starting position for the next gzread or gzwrite on the-   given compressed file. This position represents a number of bytes in the-   uncompressed data stream.--   gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)-*/--ZEXTERN int ZEXPORT gzeof OF((gzFile file));-/*-     Returns 1 when EOF has previously been detected reading the given-   input stream, otherwise zero.-*/--ZEXTERN int ZEXPORT gzdirect OF((gzFile file));-/*-     Returns 1 if file is being read directly without decompression, otherwise-   zero.-*/--ZEXTERN int ZEXPORT    gzclose OF((gzFile file));-/*-     Flushes all pending output if necessary, closes the compressed file-   and deallocates all the (de)compression state. The return value is the zlib-   error number (see function gzerror below).-*/--ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));-/*-     Returns the error message for the last error which occurred on the-   given compressed file. errnum is set to zlib error number. If an-   error occurred in the file system and not in the compression library,-   errnum is set to Z_ERRNO and the application may consult errno-   to get the exact error code.-*/--ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));-/*-     Clears the error and end-of-file flags for file. This is analogous to the-   clearerr() function in stdio. This is useful for continuing to read a gzip-   file that is being written concurrently.-*/--                        /* checksum functions */--/*-     These functions are not related to compression but are exported-   anyway because they might be useful in applications using the-   compression library.-*/--ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));-/*-     Update a running Adler-32 checksum with the bytes buf[0..len-1] and-   return the updated checksum. If buf is NULL, this function returns-   the required initial value for the checksum.-   An Adler-32 checksum is almost as reliable as a CRC32 but can be computed-   much faster. Usage example:--     uLong adler = adler32(0L, Z_NULL, 0);--     while (read_buffer(buffer, length) != EOF) {-       adler = adler32(adler, buffer, length);-     }-     if (adler != original_adler) error();-*/--ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,-                                          z_off_t len2));-/*-     Combine two Adler-32 checksums into one.  For two sequences of bytes, seq1-   and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for-   each, adler1 and adler2.  adler32_combine() returns the Adler-32 checksum of-   seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.-*/--ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));-/*-     Update a running CRC-32 with the bytes buf[0..len-1] and return the-   updated CRC-32. If buf is NULL, this function returns the required initial-   value for the for the crc. Pre- and post-conditioning (one's complement) is-   performed within this function so it shouldn't be done by the application.-   Usage example:--     uLong crc = crc32(0L, Z_NULL, 0);--     while (read_buffer(buffer, length) != EOF) {-       crc = crc32(crc, buffer, length);-     }-     if (crc != original_crc) error();-*/--ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));--/*-     Combine two CRC-32 check values into one.  For two sequences of bytes,-   seq1 and seq2 with lengths len1 and len2, CRC-32 check values were-   calculated for each, crc1 and crc2.  crc32_combine() returns the CRC-32-   check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and-   len2.-*/---                        /* various hacks, don't look :) */--/* deflateInit and inflateInit are macros to allow checking the zlib version- * and the compiler's view of z_stream:- */-ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,-                                     const char *version, int stream_size));-ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,-                                     const char *version, int stream_size));-ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int  level, int  method,-                                      int windowBits, int memLevel,-                                      int strategy, const char *version,-                                      int stream_size));-ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,-                                      const char *version, int stream_size));-ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,-                                         unsigned char FAR *window,-                                         const char *version,-                                         int stream_size));-#define deflateInit(strm, level) \-        deflateInit_((strm), (level),       ZLIB_VERSION, sizeof(z_stream))-#define inflateInit(strm) \-        inflateInit_((strm),                ZLIB_VERSION, sizeof(z_stream))-#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \-        deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\-                      (strategy),           ZLIB_VERSION, sizeof(z_stream))-#define inflateInit2(strm, windowBits) \-        inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))-#define inflateBackInit(strm, windowBits, window) \-        inflateBackInit_((strm), (windowBits), (window), \-        ZLIB_VERSION, sizeof(z_stream))---#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)-    struct internal_state {int dummy;}; /* hack for buggy compilers */-#endif--ZEXTERN const char   * ZEXPORT zError           OF((int));-ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp z));-ZEXTERN const uLongf * ZEXPORT get_crc_table    OF((void));--#ifdef __cplusplus-}-#endif--#endif /* ZLIB_H */
digest.cabal view
@@ -1,5 +1,5 @@ name:            digest-version:         0.0.0.4+version:         0.0.0.5 copyright:       (c) 2008 Eugene Kirpichov license:         BSD3 license-file:    LICENSE@@ -34,6 +34,4 @@   if !os(windows)     extra-libraries: z   else-    c-sources:     cbits/adler32.c cbits/crc32.c-    include-dirs:  cbits-    install-includes: zlib.h+    build-depends: zlib