Annotation of elwix/tools/uboot_mkimage/include/u-boot/zlib.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * This file is derived from zlib.h and zconf.h from the zlib-1.2.3
                      3:  * distribution by Jean-loup Gailly and Mark Adler, with some additions
                      4:  * by Paul Mackerras to aid in implementing Deflate compression and
                      5:  * decompression for PPP packets.
                      6:  */
                      7: 
                      8:  /*
                      9:   * ==FILEVERSION 960122==
                     10:   *
                     11:   * This marker is used by the Linux installation script to determine
                     12:   * whether an up-to-date version of this file is already installed.
                     13:   */
                     14: 
                     15: /* zlib.h -- interface of the 'zlib' general purpose compression library
                     16:   version 1.2.3, July 18th, 2005
                     17: 
                     18:   Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
                     19: 
                     20:   This software is provided 'as-is', without any express or implied
                     21:   warranty.  In no event will the authors be held liable for any damages
                     22:   arising from the use of this software.
                     23: 
                     24:   Permission is granted to anyone to use this software for any purpose,
                     25:   including commercial applications, and to alter it and redistribute it
                     26:   freely, subject to the following restrictions:
                     27: 
                     28:   1. The origin of this software must not be misrepresented; you must not
                     29:      claim that you wrote the original software. If you use this software
                     30:      in a product, an acknowledgment in the product documentation would be
                     31:      appreciated but is not required.
                     32:   2. Altered source versions must be plainly marked as such, and must not be
                     33:      misrepresented as being the original software.
                     34:   3. This notice may not be removed or altered from any source distribution.
                     35: 
                     36:   Jean-loup Gailly        Mark Adler
                     37:   jloup@gzip.org          madler@alumni.caltech.edu
                     38: 
                     39: 
                     40:   The data format used by the zlib library is described by RFCs (Request for
                     41:   Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt
                     42:   (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
                     43: */
                     44: 
                     45: #ifndef ZLIB_H
                     46: #define ZLIB_H
                     47: 
                     48: #ifdef __cplusplus
                     49: extern "C" {
                     50: #endif
                     51: 
                     52: #define ZLIB_VERSION "1.2.3"
                     53: #define ZLIB_VERNUM 0x1230
                     54: 
                     55: /* #include "zconf.h" */        /* included directly here */
                     56: /* zconf.h -- configuration of the zlib compression library
                     57:  * Copyright (C) 1995-2005 Jean-loup Gailly.
                     58:  * For conditions of distribution and use, see copyright notice in zlib.h
                     59:  */
                     60: 
                     61: /* Begin of new zconf.h */
                     62: /*
                     63:  * If you *really* need a unique prefix for all types and library functions,
                     64:  * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
                     65:  */
                     66: #ifdef Z_PREFIX
                     67: #  define deflateInit_          z_deflateInit_
                     68: #  define deflate               z_deflate
                     69: #  define deflateEnd            z_deflateEnd
                     70: #  define inflateInit_          z_inflateInit_
                     71: #  define inflate               z_inflate
                     72: #  define inflateEnd            z_inflateEnd
                     73: #  define deflateInit2_         z_deflateInit2_
                     74: #  define deflateSetDictionary  z_deflateSetDictionary
                     75: #  define deflateCopy           z_deflateCopy
                     76: #  define deflateReset          z_deflateReset
                     77: #  define deflateParams         z_deflateParams
                     78: #  define deflateBound          z_deflateBound
                     79: #  define deflatePrime          z_deflatePrime
                     80: #  define inflateInit2_         z_inflateInit2_
                     81: #  define inflateSetDictionary  z_inflateSetDictionary
                     82: #  define inflateSync           z_inflateSync
                     83: #  define inflateSyncPoint      z_inflateSyncPoint
                     84: #  define inflateCopy           z_inflateCopy
                     85: #  define inflateReset          z_inflateReset
                     86: #  define inflateBack           z_inflateBack
                     87: #  define inflateBackEnd        z_inflateBackEnd
                     88: #  define compress              z_compress
                     89: #  define compress2             z_compress2
                     90: #  define compressBound         z_compressBound
                     91: #  define uncompress            z_uncompress
                     92: #  define adler32               z_adler32
                     93: #  define crc32                 z_crc32
                     94: #  define get_crc_table         z_get_crc_table
                     95: #  define zError                z_zError
                     96: 
                     97: #  define alloc_func            z_alloc_func
                     98: #  define free_func             z_free_func
                     99: #  define in_func               z_in_func
                    100: #  define out_func              z_out_func
                    101: #  define Byte                  z_Byte
                    102: #  define uInt                  z_uInt
                    103: #  define uLong                 z_uLong
                    104: #  define Bytef                 z_Bytef
                    105: #  define charf                 z_charf
                    106: #  define intf                  z_intf
                    107: #  define uIntf                 z_uIntf
                    108: #  define uLongf                z_uLongf
                    109: #  define voidpf                z_voidpf
                    110: #  define voidp                 z_voidp
                    111: #endif
                    112: 
                    113: #if defined(__MSDOS__) && !defined(MSDOS)
                    114: #  define MSDOS
                    115: #endif
                    116: #if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
                    117: #  define OS2
                    118: #endif
                    119: #if defined(_WINDOWS) && !defined(WINDOWS)
                    120: #  define WINDOWS
                    121: #endif
                    122: #if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
                    123: #  ifndef WIN32
                    124: #    define WIN32
                    125: #  endif
                    126: #endif
                    127: #if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
                    128: #  if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
                    129: #    ifndef SYS16BIT
                    130: #      define SYS16BIT
                    131: #    endif
                    132: #  endif
                    133: #endif
                    134: 
                    135: /*
                    136:  * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
                    137:  * than 64k bytes at a time (needed on systems with 16-bit int).
                    138:  */
                    139: #ifdef SYS16BIT
                    140: #  define MAXSEG_64K
                    141: #endif
                    142: #ifdef MSDOS
                    143: #  define UNALIGNED_OK
                    144: #endif
                    145: 
                    146: #ifdef __STDC_VERSION__
                    147: #  ifndef STDC
                    148: #    define STDC
                    149: #  endif
                    150: #  if __STDC_VERSION__ >= 199901L
                    151: #    ifndef STDC99
                    152: #      define STDC99
                    153: #    endif
                    154: #  endif
                    155: #endif
                    156: #if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
                    157: #  define STDC
                    158: #endif
                    159: #if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
                    160: #  define STDC
                    161: #endif
                    162: #if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
                    163: #  define STDC
                    164: #endif
                    165: #if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
                    166: #  define STDC
                    167: #endif
                    168: 
                    169: #if defined(__OS400__) && !defined(STDC)    /* iSeries (formerly AS/400). */
                    170: #  define STDC
                    171: #endif
                    172: 
                    173: #ifndef STDC
                    174: #  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
                    175: #    define const       /* note: need a more gentle solution here */
                    176: #  endif
                    177: #endif
                    178: 
                    179: /* Some Mac compilers merge all .h files incorrectly: */
                    180: #if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
                    181: #  define NO_DUMMY_DECL
                    182: #endif
                    183: 
                    184: /* Maximum value for memLevel in deflateInit2 */
                    185: #ifndef MAX_MEM_LEVEL
                    186: #  ifdef MAXSEG_64K
                    187: #    define MAX_MEM_LEVEL 8
                    188: #  else
                    189: #    define MAX_MEM_LEVEL 9
                    190: #  endif
                    191: #endif
                    192: 
                    193: /* Maximum value for windowBits in deflateInit2 and inflateInit2.
                    194:  * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
                    195:  * created by gzip. (Files created by minigzip can still be extracted by
                    196:  * gzip.)
                    197:  */
                    198: #ifndef MAX_WBITS
                    199: #  define MAX_WBITS   15 /* 32K LZ77 window */
                    200: #endif
                    201: 
                    202: /* The memory requirements for deflate are (in bytes):
                    203:             (1 << (windowBits+2)) +  (1 << (memLevel+9))
                    204:  that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
                    205:  plus a few kilobytes for small objects. For example, if you want to reduce
                    206:  the default memory requirements from 256K to 128K, compile with
                    207:      make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
                    208:  Of course this will generally degrade compression (there's no free lunch).
                    209: 
                    210:    The memory requirements for inflate are (in bytes) 1 << windowBits
                    211:  that is, 32K for windowBits=15 (default value) plus a few kilobytes
                    212:  for small objects.
                    213: */
                    214: 
                    215:                         /* Type declarations */
                    216: 
                    217: #ifndef OF /* function prototypes */
                    218: #  ifdef STDC
                    219: #    define OF(args)  args
                    220: #  else
                    221: #    define OF(args)  ()
                    222: #  endif
                    223: #endif
                    224: 
                    225: /* The following definitions for FAR are needed only for MSDOS mixed
                    226:  * model programming (small or medium model with some far allocations).
                    227:  * This was tested only with MSC; for other MSDOS compilers you may have
                    228:  * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
                    229:  * just define FAR to be empty.
                    230:  */
                    231: #ifdef SYS16BIT
                    232: #  if defined(M_I86SM) || defined(M_I86MM)
                    233:      /* MSC small or medium model */
                    234: #    define SMALL_MEDIUM
                    235: #    ifdef _MSC_VER
                    236: #      define FAR _far
                    237: #    else
                    238: #      define FAR far
                    239: #    endif
                    240: #  endif
                    241: #  if (defined(__SMALL__) || defined(__MEDIUM__))
                    242:      /* Turbo C small or medium model */
                    243: #    define SMALL_MEDIUM
                    244: #    ifdef __BORLANDC__
                    245: #      define FAR _far
                    246: #    else
                    247: #      define FAR far
                    248: #    endif
                    249: #  endif
                    250: #endif
                    251: 
                    252: #if defined(WINDOWS) || defined(WIN32)
                    253:    /* If building or using zlib as a DLL, define ZLIB_DLL.
                    254:     * This is not mandatory, but it offers a little performance increase.
                    255:     */
                    256: #  ifdef ZLIB_DLL
                    257: #    if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
                    258: #      ifdef ZLIB_INTERNAL
                    259: #        define ZEXTERN extern __declspec(dllexport)
                    260: #      else
                    261: #        define ZEXTERN extern __declspec(dllimport)
                    262: #      endif
                    263: #    endif
                    264: #  endif  /* ZLIB_DLL */
                    265:    /* If building or using zlib with the WINAPI/WINAPIV calling convention,
                    266:     * define ZLIB_WINAPI.
                    267:     * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
                    268:     */
                    269: #  ifdef ZLIB_WINAPI
                    270: #    ifdef FAR
                    271: #      undef FAR
                    272: #    endif
                    273: #    include <windows.h>
                    274:      /* No need for _export, use ZLIB.DEF instead. */
                    275:      /* For complete Windows compatibility, use WINAPI, not __stdcall. */
                    276: #    define ZEXPORT WINAPI
                    277: #    ifdef WIN32
                    278: #      define ZEXPORTVA WINAPIV
                    279: #    else
                    280: #      define ZEXPORTVA FAR CDECL
                    281: #    endif
                    282: #  endif
                    283: #endif
                    284: 
                    285: #if defined (__BEOS__)
                    286: #  ifdef ZLIB_DLL
                    287: #    ifdef ZLIB_INTERNAL
                    288: #      define ZEXPORT   __declspec(dllexport)
                    289: #      define ZEXPORTVA __declspec(dllexport)
                    290: #    else
                    291: #      define ZEXPORT   __declspec(dllimport)
                    292: #      define ZEXPORTVA __declspec(dllimport)
                    293: #    endif
                    294: #  endif
                    295: #endif
                    296: 
                    297: #ifndef ZEXTERN
                    298: #  define ZEXTERN extern
                    299: #endif
                    300: #ifndef ZEXPORT
                    301: #  define ZEXPORT
                    302: #endif
                    303: #ifndef ZEXPORTVA
                    304: #  define ZEXPORTVA
                    305: #endif
                    306: 
                    307: #ifndef FAR
                    308: #  define FAR
                    309: #endif
                    310: 
                    311: #if !defined(__MACTYPES__)
                    312: typedef unsigned char  Byte;  /* 8 bits */
                    313: #endif
                    314: typedef unsigned int   uInt;  /* 16 bits or more */
                    315: typedef unsigned long  uLong; /* 32 bits or more */
                    316: 
                    317: #ifdef SMALL_MEDIUM
                    318:    /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
                    319: #  define Bytef Byte FAR
                    320: #else
                    321:    typedef Byte  FAR Bytef;
                    322: #endif
                    323: typedef char  FAR charf;
                    324: typedef int   FAR intf;
                    325: typedef uInt  FAR uIntf;
                    326: typedef uLong FAR uLongf;
                    327: 
                    328: #ifdef STDC
                    329:    typedef void const *voidpc;
                    330:    typedef void FAR   *voidpf;
                    331:    typedef void       *voidp;
                    332: #else
                    333:    typedef Byte const *voidpc;
                    334:    typedef Byte FAR   *voidpf;
                    335:    typedef Byte       *voidp;
                    336: #endif
                    337: 
                    338: #  ifdef VMS
                    339: #    include <unixio.h>   /* for off_t */
                    340: #  endif
                    341: #  define z_off_t off_t
                    342: #ifndef SEEK_SET
                    343: #  define SEEK_SET        0       /* Seek from beginning of file.  */
                    344: #  define SEEK_CUR        1       /* Seek from current position.  */
                    345: #  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */
                    346: #endif
                    347: #ifndef z_off_t
                    348: #  define z_off_t long
                    349: #endif
                    350: 
                    351: #if defined(__OS400__)
                    352: #  define NO_vsnprintf
                    353: #endif
                    354: 
                    355: #if defined(__MVS__)
                    356: #  define NO_vsnprintf
                    357: #  ifdef FAR
                    358: #    undef FAR
                    359: #  endif
                    360: #endif
                    361: 
                    362: /* MVS linker does not support external names larger than 8 bytes */
                    363: #if defined(__MVS__)
                    364: #   pragma map(deflateInit_,"DEIN")
                    365: #   pragma map(deflateInit2_,"DEIN2")
                    366: #   pragma map(deflateEnd,"DEEND")
                    367: #   pragma map(deflateBound,"DEBND")
                    368: #   pragma map(inflateInit_,"ININ")
                    369: #   pragma map(inflateInit2_,"ININ2")
                    370: #   pragma map(inflateEnd,"INEND")
                    371: #   pragma map(inflateSync,"INSY")
                    372: #   pragma map(inflateSetDictionary,"INSEDI")
                    373: #   pragma map(compressBound,"CMBND")
                    374: #   pragma map(inflate_table,"INTABL")
                    375: #   pragma map(inflate_fast,"INFA")
                    376: #   pragma map(inflate_copyright,"INCOPY")
                    377: #endif
                    378: /* End of new zconf.h */
                    379: 
                    380: /*
                    381:      The 'zlib' compression library provides in-memory compression and
                    382:   decompression functions, including integrity checks of the uncompressed
                    383:   data.  This version of the library supports only one compression method
                    384:   (deflation) but other algorithms will be added later and will have the same
                    385:   stream interface.
                    386: 
                    387:      Compression can be done in a single step if the buffers are large
                    388:   enough (for example if an input file is mmap'ed), or can be done by
                    389:   repeated calls of the compression function.  In the latter case, the
                    390:   application must provide more input and/or consume the output
                    391:   (providing more output space) before each call.
                    392: 
                    393:      The compressed data format used by default by the in-memory functions is
                    394:   the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
                    395:   around a deflate stream, which is itself documented in RFC 1951.
                    396: 
                    397:      The library also supports reading and writing files in gzip (.gz) format
                    398:   with an interface similar to that of stdio using the functions that start
                    399:   with "gz".  The gzip format is different from the zlib format.  gzip is a
                    400:   gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
                    401: 
                    402:      This library can optionally read and write gzip streams in memory as well.
                    403: 
                    404:      The zlib format was designed to be compact and fast for use in memory
                    405:   and on communications channels.  The gzip format was designed for single-
                    406:   file compression on file systems, has a larger header than zlib to maintain
                    407:   directory information, and uses a different, slower check method than zlib.
                    408: 
                    409:      The library does not install any signal handler. The decoder checks
                    410:   the consistency of the compressed data, so the library should never
                    411:   crash even in case of corrupted input.
                    412: */
                    413: 
                    414: typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
                    415: typedef void   (*free_func)  OF((voidpf opaque, voidpf address, uInt size));
                    416: typedef void   (*cb_func)    OF((Bytef *buf, uInt len));
                    417: 
                    418: struct internal_state;
                    419: 
                    420: typedef struct z_stream_s {
                    421:        Bytef   *next_in; /* next input byte */
                    422:        uInt    avail_in; /* number of bytes available at next_in */
                    423:        uLong   total_in; /* total nb of input bytes read so far */
                    424:        Bytef   *next_out; /* next output byte should be put there */
                    425:        uInt    avail_out; /* remaining free space at next_out */
                    426:        uLong   total_out; /* total nb of bytes output so far */
                    427:        char    *msg;   /* last error message, NULL if no error */
                    428:        struct  internal_state FAR *state; /* not visible by applications */
                    429:        alloc_func      zalloc; /* used to allocate the internal state */
                    430:        free_func       zfree;  /* used to free the internal state */
                    431:        voidpf  opaque; /* private data object passed to zalloc and zfree */
                    432:        int     data_type;      /* best guess about the data type:
                    433:                                        binary or text */
                    434:        cb_func outcb;  /* called regularly just before blocks of output */
                    435:        uLong   adler;  /* adler32 value of the uncompressed data */
                    436:        uLong   reserved;       /* reserved for future use */
                    437: } z_stream;
                    438: 
                    439: typedef z_stream FAR *z_streamp;
                    440: 
                    441: /*
                    442:      gzip header information passed to and from zlib routines.  See RFC 1952
                    443:   for more details on the meanings of these fields.
                    444: */
                    445: typedef struct gz_header_s {
                    446:        int     text;   /* true if compressed data believed to be text */
                    447:        uLong   time;   /* modification time */
                    448:        int     xflags; /* extra flags (not used when writing a gzip file) */
                    449:        int     os;     /* operating system */
                    450:        Bytef   *extra; /* pointer to extra field or Z_NULL if none */
                    451:        uInt    extra_len; /* extra field length (valid if extra != Z_NULL) */
                    452:        uInt    extra_max; /* space at extra (only when reading header) */
                    453:        Bytef   *name; /* pointer to zero-terminated file name or Z_NULL */
                    454:        uInt    name_max; /* space at name (only when reading header) */
                    455:        Bytef   *comment; /* pointer to zero-terminated comment or Z_NULL */
                    456:        uInt    comm_max; /* space at comment (only when reading header) */
                    457:        int     hcrc; /* true if there was or will be a header crc */
                    458:        int     done; /* true when done reading gzip header (not used
                    459:                        when writing a gzip file) */
                    460: } gz_header;
                    461: 
                    462: typedef gz_header FAR *gz_headerp;
                    463: 
                    464:                         /* constants */
                    465: #define Z_NO_FLUSH      0
                    466: #define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
                    467: #define Z_SYNC_FLUSH    2
                    468: #define Z_FULL_FLUSH    3
                    469: #define Z_FINISH        4
                    470: #define Z_BLOCK         5
                    471: /* Allowed flush values; see deflate() and inflate() below for details */
                    472: 
                    473: #define Z_OK            0
                    474: #define Z_STREAM_END    1
                    475: #define Z_NEED_DICT     2
                    476: #define Z_ERRNO        (-1)
                    477: #define Z_STREAM_ERROR (-2)
                    478: #define Z_DATA_ERROR   (-3)
                    479: #define Z_MEM_ERROR    (-4)
                    480: #define Z_BUF_ERROR    (-5)
                    481: #define Z_VERSION_ERROR (-6)
                    482: /* Return codes for the compression/decompression functions. Negative
                    483:  * values are errors, positive values are used for special but normal events.
                    484:  */
                    485: 
                    486: #define Z_NO_COMPRESSION         0
                    487: #define Z_BEST_SPEED             1
                    488: #define Z_BEST_COMPRESSION       9
                    489: #define Z_DEFAULT_COMPRESSION  (-1)
                    490: /* compression levels */
                    491: 
                    492: #define Z_FILTERED            1
                    493: #define Z_HUFFMAN_ONLY        2
                    494: #define Z_RLE                 3
                    495: #define Z_FIXED               4
                    496: #define Z_DEFAULT_STRATEGY    0
                    497: /* compression strategy; see deflateInit2() below for details */
                    498: 
                    499: #define Z_BINARY   0
                    500: #define Z_TEXT     1
                    501: #define Z_ASCII    Z_TEXT   /* for compatibility with 1.2.2 and earlier */
                    502: #define Z_UNKNOWN  2
                    503: /* Possible values of the data_type field (though see inflate()) */
                    504: 
                    505: #define Z_DEFLATED   8
                    506: /* The deflate compression method (the only one supported in this version) */
                    507: 
                    508: #define Z_NULL  0  /* for initializing zalloc, zfree, opaque */
                    509: 
                    510:                         /* basic functions */
                    511: 
                    512: /* The application can compare zlibVersion and ZLIB_VERSION for consistency.
                    513:    If the first character differs, the library code actually used is
                    514:    not compatible with the zlib.h header file used by the application.
                    515:    This check is automatically made by deflateInit and inflateInit.
                    516:  */
                    517: 
                    518: ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, const char *version,
                    519:                                int stream_size));
                    520: 
                    521: ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
                    522: /*
                    523:     inflate decompresses as much data as possible, and stops when the input
                    524:   buffer becomes empty or the output buffer becomes full. It may introduce
                    525:   some output latency (reading input without producing any output) except when
                    526:   forced to flush.
                    527: 
                    528:   The detailed semantics are as follows. inflate performs one or both of the
                    529:   following actions:
                    530: 
                    531:   - Decompress more input starting at next_in and update next_in and avail_in
                    532:     accordingly. If not all input can be processed (because there is not
                    533:     enough room in the output buffer), next_in is updated and processing
                    534:     will resume at this point for the next call of inflate().
                    535: 
                    536:   - Provide more output starting at next_out and update next_out and avail_out
                    537:     accordingly.  inflate() provides as much output as possible, until there
                    538:     is no more input data or no more space in the output buffer (see below
                    539:     about the flush parameter).
                    540: 
                    541:   Before the call of inflate(), the application should ensure that at least
                    542:   one of the actions is possible, by providing more input and/or consuming
                    543:   more output, and updating the next_* and avail_* values accordingly.
                    544:   The application can consume the uncompressed output when it wants, for
                    545:   example when the output buffer is full (avail_out == 0), or after each
                    546:   call of inflate(). If inflate returns Z_OK and with zero avail_out, it
                    547:   must be called again after making room in the output buffer because there
                    548:   might be more output pending.
                    549: 
                    550:     The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
                    551:   Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much
                    552:   output as possible to the output buffer. Z_BLOCK requests that inflate() stop
                    553:   if and when it gets to the next deflate block boundary. When decoding the
                    554:   zlib or gzip format, this will cause inflate() to return immediately after
                    555:   the header and before the first block. When doing a raw inflate, inflate()
                    556:   will go ahead and process the first block, and will return when it gets to
                    557:   the end of that block, or when it runs out of data.
                    558: 
                    559:     The Z_BLOCK option assists in appending to or combining deflate streams.
                    560:   Also to assist in this, on return inflate() will set strm->data_type to the
                    561:   number of unused bits in the last byte taken from strm->next_in, plus 64
                    562:   if inflate() is currently decoding the last block in the deflate stream,
                    563:   plus 128 if inflate() returned immediately after decoding an end-of-block
                    564:   code or decoding the complete header up to just before the first byte of the
                    565:   deflate stream. The end-of-block will not be indicated until all of the
                    566:   uncompressed data from that block has been written to strm->next_out.  The
                    567:   number of unused bits may in general be greater than seven, except when
                    568:   bit 7 of data_type is set, in which case the number of unused bits will be
                    569:   less than eight.
                    570: 
                    571:     inflate() should normally be called until it returns Z_STREAM_END or an
                    572:   error. However if all decompression is to be performed in a single step
                    573:   (a single call of inflate), the parameter flush should be set to
                    574:   Z_FINISH. In this case all pending input is processed and all pending
                    575:   output is flushed; avail_out must be large enough to hold all the
                    576:   uncompressed data. (The size of the uncompressed data may have been saved
                    577:   by the compressor for this purpose.) The next operation on this stream must
                    578:   be inflateEnd to deallocate the decompression state. The use of Z_FINISH
                    579:   is never required, but can be used to inform inflate that a faster approach
                    580:   may be used for the single inflate() call.
                    581: 
                    582:      In this implementation, inflate() always flushes as much output as
                    583:   possible to the output buffer, and always uses the faster approach on the
                    584:   first call. So the only effect of the flush parameter in this implementation
                    585:   is on the return value of inflate(), as noted below, or when it returns early
                    586:   because Z_BLOCK is used.
                    587: 
                    588:      If a preset dictionary is needed after this call (see inflateSetDictionary
                    589:   below), inflate sets strm->adler to the adler32 checksum of the dictionary
                    590:   chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
                    591:   strm->adler to the adler32 checksum of all output produced so far (that is,
                    592:   total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
                    593:   below. At the end of the stream, inflate() checks that its computed adler32
                    594:   checksum is equal to that saved by the compressor and returns Z_STREAM_END
                    595:   only if the checksum is correct.
                    596: 
                    597:     inflate() will decompress and check either zlib-wrapped or gzip-wrapped
                    598:   deflate data.  The header type is detected automatically.  Any information
                    599:   contained in the gzip header is not retained, so applications that need that
                    600:   information should instead use raw inflate, see inflateInit2() below, or
                    601:   inflateBack() and perform their own processing of the gzip header and
                    602:   trailer.
                    603: 
                    604:     inflate() returns Z_OK if some progress has been made (more input processed
                    605:   or more output produced), Z_STREAM_END if the end of the compressed data has
                    606:   been reached and all uncompressed output has been produced, Z_NEED_DICT if a
                    607:   preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
                    608:   corrupted (input stream not conforming to the zlib format or incorrect check
                    609:   value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
                    610:   if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
                    611:   Z_BUF_ERROR if no progress is possible or if there was not enough room in the
                    612:   output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
                    613:   inflate() can be called again with more input and more output space to
                    614:   continue decompressing. If Z_DATA_ERROR is returned, the application may then
                    615:   call inflateSync() to look for a good compression block if a partial recovery
                    616:   of the data is desired.
                    617: */
                    618: 
                    619: ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
                    620: /*
                    621:      All dynamically allocated data structures for this stream are freed.
                    622:    This function discards any unprocessed input and does not flush any
                    623:    pending output.
                    624: 
                    625:      inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
                    626:    was inconsistent. In the error case, msg may be set but then points to a
                    627:    static string (which must not be deallocated).
                    628: */
                    629: 
                    630:                         /* Advanced functions */
                    631: 
                    632: ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
                    633: 
                    634:                         /* utility functions */
                    635: 
                    636: /*
                    637:      The following utility functions are implemented on top of the
                    638:    basic stream-oriented functions. To simplify the interface, some
                    639:    default options are assumed (compression level and memory usage,
                    640:    standard memory allocation functions). The source code of these
                    641:    utility functions can easily be modified if you need special options.
                    642: */
                    643: 
                    644: ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
                    645: /*
                    646:      Update a running Adler-32 checksum with the bytes buf[0..len-1] and
                    647:    return the updated checksum. If buf is NULL, this function returns
                    648:    the required initial value for the checksum.
                    649:    An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
                    650:    much faster. Usage example:
                    651: 
                    652:      uLong adler = adler32(0L, Z_NULL, 0);
                    653: 
                    654:      while (read_buffer(buffer, length) != EOF) {
                    655:        adler = adler32(adler, buffer, length);
                    656:      }
                    657:      if (adler != original_adler) error();
                    658: */
                    659: 
                    660: /*
                    661:      Combine two Adler-32 checksums into one.  For two sequences of bytes, seq1
                    662:    and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
                    663:    each, adler1 and adler2.  adler32_combine() returns the Adler-32 checksum of
                    664:    seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.
                    665: */
                    666: 
                    667: ZEXTERN  uInt ZEXPORT crc32  OF((uInt crc, const Bytef *buf, uInt len));
                    668: /*
                    669:      Update a running CRC-32 with the bytes buf[0..len-1] and return the
                    670:    updated CRC-32. If buf is NULL, this function returns the required initial
                    671:    value for the for the crc. Pre- and post-conditioning (one's complement) is
                    672:    performed within this function so it shouldn't be done by the application.
                    673:    Usage example:
                    674: 
                    675:      uLong crc = crc32(0L, Z_NULL, 0);
                    676: 
                    677:      while (read_buffer(buffer, length) != EOF) {
                    678:        crc = crc32(crc, buffer, length);
                    679:      }
                    680:      if (crc != original_crc) error();
                    681: */
                    682: 
                    683: ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,
                    684:                                       const char *version, int stream_size));
                    685: #define inflateInit(strm) \
                    686:        inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream))
                    687: #define inflateInit2(strm, windowBits) \
                    688:        inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
                    689: 
                    690: #if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
                    691:        struct internal_state {int dummy;}; /* hack for buggy compilers */
                    692: #endif
                    693: 
                    694: #ifdef __cplusplus
                    695: }
                    696: #endif
                    697: 
                    698: #endif /* ZLIB_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>