core/zlib/zlib.h
author Scott Ehlert <ds@alliedmods.net>
Sun Mar 30 07:00:22 2008 +0000 (2008-03-30)
changeset 1952 b7aa2b626807
permissions -rw-r--r--
Spring Cleaning, Part Ichi (1)
Various minor things done to project files
Updated sample extension project file and updated makefile to the new unified version (more changes likely on the way)
Updated regex project file and makefile
ds@1952
     1
/* zlib.h -- interface of the 'zlib' general purpose compression library
ds@1952
     2
  version 1.2.3, July 18th, 2005
ds@1952
     3
ds@1952
     4
  Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
ds@1952
     5
ds@1952
     6
  This software is provided 'as-is', without any express or implied
ds@1952
     7
  warranty.  In no event will the authors be held liable for any damages
ds@1952
     8
  arising from the use of this software.
ds@1952
     9
ds@1952
    10
  Permission is granted to anyone to use this software for any purpose,
ds@1952
    11
  including commercial applications, and to alter it and redistribute it
ds@1952
    12
  freely, subject to the following restrictions:
ds@1952
    13
ds@1952
    14
  1. The origin of this software must not be misrepresented; you must not
ds@1952
    15
     claim that you wrote the original software. If you use this software
ds@1952
    16
     in a product, an acknowledgment in the product documentation would be
ds@1952
    17
     appreciated but is not required.
ds@1952
    18
  2. Altered source versions must be plainly marked as such, and must not be
ds@1952
    19
     misrepresented as being the original software.
ds@1952
    20
  3. This notice may not be removed or altered from any source distribution.
ds@1952
    21
ds@1952
    22
  Jean-loup Gailly        Mark Adler
ds@1952
    23
  [email protected]          [email protected]
ds@1952
    24
ds@1952
    25
ds@1952
    26
  The data format used by the zlib library is described by RFCs (Request for
ds@1952
    27
  Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt
ds@1952
    28
  (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
ds@1952
    29
*/
ds@1952
    30
ds@1952
    31
#ifndef ZLIB_H
ds@1952
    32
#define ZLIB_H
ds@1952
    33
ds@1952
    34
#include "zconf.h"
ds@1952
    35
ds@1952
    36
#ifdef __cplusplus
ds@1952
    37
extern "C" {
ds@1952
    38
#endif
ds@1952
    39
ds@1952
    40
#define ZLIB_VERSION "1.2.3"
ds@1952
    41
#define ZLIB_VERNUM 0x1230
ds@1952
    42
ds@1952
    43
/*
ds@1952
    44
     The 'zlib' compression library provides in-memory compression and
ds@1952
    45
  decompression functions, including integrity checks of the uncompressed
ds@1952
    46
  data.  This version of the library supports only one compression method
ds@1952
    47
  (deflation) but other algorithms will be added later and will have the same
ds@1952
    48
  stream interface.
ds@1952
    49
ds@1952
    50
     Compression can be done in a single step if the buffers are large
ds@1952
    51
  enough (for example if an input file is mmap'ed), or can be done by
ds@1952
    52
  repeated calls of the compression function.  In the latter case, the
ds@1952
    53
  application must provide more input and/or consume the output
ds@1952
    54
  (providing more output space) before each call.
ds@1952
    55
ds@1952
    56
     The compressed data format used by default by the in-memory functions is
ds@1952
    57
  the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
ds@1952
    58
  around a deflate stream, which is itself documented in RFC 1951.
ds@1952
    59
ds@1952
    60
     The library also supports reading and writing files in gzip (.gz) format
ds@1952
    61
  with an interface similar to that of stdio using the functions that start
ds@1952
    62
  with "gz".  The gzip format is different from the zlib format.  gzip is a
ds@1952
    63
  gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
ds@1952
    64
ds@1952
    65
     This library can optionally read and write gzip streams in memory as well.
ds@1952
    66
ds@1952
    67
     The zlib format was designed to be compact and fast for use in memory
ds@1952
    68
  and on communications channels.  The gzip format was designed for single-
ds@1952
    69
  file compression on file systems, has a larger header than zlib to maintain
ds@1952
    70
  directory information, and uses a different, slower check method than zlib.
ds@1952
    71
ds@1952
    72
     The library does not install any signal handler. The decoder checks
ds@1952
    73
  the consistency of the compressed data, so the library should never
ds@1952
    74
  crash even in case of corrupted input.
ds@1952
    75
*/
ds@1952
    76
ds@1952
    77
typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
ds@1952
    78
typedef void   (*free_func)  OF((voidpf opaque, voidpf address));
ds@1952
    79
ds@1952
    80
struct internal_state;
ds@1952
    81
ds@1952
    82
typedef struct z_stream_s {
ds@1952
    83
    Bytef    *next_in;  /* next input byte */
ds@1952
    84
    uInt     avail_in;  /* number of bytes available at next_in */
ds@1952
    85
    uLong    total_in;  /* total nb of input bytes read so far */
ds@1952
    86
ds@1952
    87
    Bytef    *next_out; /* next output byte should be put there */
ds@1952
    88
    uInt     avail_out; /* remaining free space at next_out */
ds@1952
    89
    uLong    total_out; /* total nb of bytes output so far */
ds@1952
    90
ds@1952
    91
    char     *msg;      /* last error message, NULL if no error */
ds@1952
    92
    struct internal_state FAR *state; /* not visible by applications */
ds@1952
    93
ds@1952
    94
    alloc_func zalloc;  /* used to allocate the internal state */
ds@1952
    95
    free_func  zfree;   /* used to free the internal state */
ds@1952
    96
    voidpf     opaque;  /* private data object passed to zalloc and zfree */
ds@1952
    97
ds@1952
    98
    int     data_type;  /* best guess about the data type: binary or text */
ds@1952
    99
    uLong   adler;      /* adler32 value of the uncompressed data */
ds@1952
   100
    uLong   reserved;   /* reserved for future use */
ds@1952
   101
} z_stream;
ds@1952
   102
ds@1952
   103
typedef z_stream FAR *z_streamp;
ds@1952
   104
ds@1952
   105
/*
ds@1952
   106
     gzip header information passed to and from zlib routines.  See RFC 1952
ds@1952
   107
  for more details on the meanings of these fields.
ds@1952
   108
*/
ds@1952
   109
typedef struct gz_header_s {
ds@1952
   110
    int     text;       /* true if compressed data believed to be text */
ds@1952
   111
    uLong   time;       /* modification time */
ds@1952
   112
    int     xflags;     /* extra flags (not used when writing a gzip file) */
ds@1952
   113
    int     os;         /* operating system */
ds@1952
   114
    Bytef   *extra;     /* pointer to extra field or Z_NULL if none */
ds@1952
   115
    uInt    extra_len;  /* extra field length (valid if extra != Z_NULL) */
ds@1952
   116
    uInt    extra_max;  /* space at extra (only when reading header) */
ds@1952
   117
    Bytef   *name;      /* pointer to zero-terminated file name or Z_NULL */
ds@1952
   118
    uInt    name_max;   /* space at name (only when reading header) */
ds@1952
   119
    Bytef   *comment;   /* pointer to zero-terminated comment or Z_NULL */
ds@1952
   120
    uInt    comm_max;   /* space at comment (only when reading header) */
ds@1952
   121
    int     hcrc;       /* true if there was or will be a header crc */
ds@1952
   122
    int     done;       /* true when done reading gzip header (not used
ds@1952
   123
                           when writing a gzip file) */
ds@1952
   124
} gz_header;
ds@1952
   125
ds@1952
   126
typedef gz_header FAR *gz_headerp;
ds@1952
   127
ds@1952
   128
/*
ds@1952
   129
   The application must update next_in and avail_in when avail_in has
ds@1952
   130
   dropped to zero. It must update next_out and avail_out when avail_out
ds@1952
   131
   has dropped to zero. The application must initialize zalloc, zfree and
ds@1952
   132
   opaque before calling the init function. All other fields are set by the
ds@1952
   133
   compression library and must not be updated by the application.
ds@1952
   134
ds@1952
   135
   The opaque value provided by the application will be passed as the first
ds@1952
   136
   parameter for calls of zalloc and zfree. This can be useful for custom
ds@1952
   137
   memory management. The compression library attaches no meaning to the
ds@1952
   138
   opaque value.
ds@1952
   139
ds@1952
   140
   zalloc must return Z_NULL if there is not enough memory for the object.
ds@1952
   141
   If zlib is used in a multi-threaded application, zalloc and zfree must be
ds@1952
   142
   thread safe.
ds@1952
   143
ds@1952
   144
   On 16-bit systems, the functions zalloc and zfree must be able to allocate
ds@1952
   145
   exactly 65536 bytes, but will not be required to allocate more than this
ds@1952
   146
   if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
ds@1952
   147
   pointers returned by zalloc for objects of exactly 65536 bytes *must*
ds@1952
   148
   have their offset normalized to zero. The default allocation function
ds@1952
   149
   provided by this library ensures this (see zutil.c). To reduce memory
ds@1952
   150
   requirements and avoid any allocation of 64K objects, at the expense of
ds@1952
   151
   compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
ds@1952
   152
ds@1952
   153
   The fields total_in and total_out can be used for statistics or
ds@1952
   154
   progress reports. After compression, total_in holds the total size of
ds@1952
   155
   the uncompressed data and may be saved for use in the decompressor
ds@1952
   156
   (particularly if the decompressor wants to decompress everything in
ds@1952
   157
   a single step).
ds@1952
   158
*/
ds@1952
   159
ds@1952
   160
                        /* constants */
ds@1952
   161
ds@1952
   162
#define Z_NO_FLUSH      0
ds@1952
   163
#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
ds@1952
   164
#define Z_SYNC_FLUSH    2
ds@1952
   165
#define Z_FULL_FLUSH    3
ds@1952
   166
#define Z_FINISH        4
ds@1952
   167
#define Z_BLOCK         5
ds@1952
   168
/* Allowed flush values; see deflate() and inflate() below for details */
ds@1952
   169
ds@1952
   170
#define Z_OK            0
ds@1952
   171
#define Z_STREAM_END    1
ds@1952
   172
#define Z_NEED_DICT     2
ds@1952
   173
#define Z_ERRNO        (-1)
ds@1952
   174
#define Z_STREAM_ERROR (-2)
ds@1952
   175
#define Z_DATA_ERROR   (-3)
ds@1952
   176
#define Z_MEM_ERROR    (-4)
ds@1952
   177
#define Z_BUF_ERROR    (-5)
ds@1952
   178
#define Z_VERSION_ERROR (-6)
ds@1952
   179
/* Return codes for the compression/decompression functions. Negative
ds@1952
   180
 * values are errors, positive values are used for special but normal events.
ds@1952
   181
 */
ds@1952
   182
ds@1952
   183
#define Z_NO_COMPRESSION         0
ds@1952
   184
#define Z_BEST_SPEED             1
ds@1952
   185
#define Z_BEST_COMPRESSION       9
ds@1952
   186
#define Z_DEFAULT_COMPRESSION  (-1)
ds@1952
   187
/* compression levels */
ds@1952
   188
ds@1952
   189
#define Z_FILTERED            1
ds@1952
   190
#define Z_HUFFMAN_ONLY        2
ds@1952
   191
#define Z_RLE                 3
ds@1952
   192
#define Z_FIXED               4
ds@1952
   193
#define Z_DEFAULT_STRATEGY    0
ds@1952
   194
/* compression strategy; see deflateInit2() below for details */
ds@1952
   195
ds@1952
   196
#define Z_BINARY   0
ds@1952
   197
#define Z_TEXT     1
ds@1952
   198
#define Z_ASCII    Z_TEXT   /* for compatibility with 1.2.2 and earlier */
ds@1952
   199
#define Z_UNKNOWN  2
ds@1952
   200
/* Possible values of the data_type field (though see inflate()) */
ds@1952
   201
ds@1952
   202
#define Z_DEFLATED   8
ds@1952
   203
/* The deflate compression method (the only one supported in this version) */
ds@1952
   204
ds@1952
   205
#define Z_NULL  0  /* for initializing zalloc, zfree, opaque */
ds@1952
   206
ds@1952
   207
#define zlib_version zlibVersion()
ds@1952
   208
/* for compatibility with versions < 1.0.2 */
ds@1952
   209
ds@1952
   210
                        /* basic functions */
ds@1952
   211
ds@1952
   212
ZEXTERN const char * ZEXPORT zlibVersion OF((void));
ds@1952
   213
/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
ds@1952
   214
   If the first character differs, the library code actually used is
ds@1952
   215
   not compatible with the zlib.h header file used by the application.
ds@1952
   216
   This check is automatically made by deflateInit and inflateInit.
ds@1952
   217
 */
ds@1952
   218
ds@1952
   219
/*
ds@1952
   220
ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
ds@1952
   221
ds@1952
   222
     Initializes the internal stream state for compression. The fields
ds@1952
   223
   zalloc, zfree and opaque must be initialized before by the caller.
ds@1952
   224
   If zalloc and zfree are set to Z_NULL, deflateInit updates them to
ds@1952
   225
   use default allocation functions.
ds@1952
   226
ds@1952
   227
     The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
ds@1952
   228
   1 gives best speed, 9 gives best compression, 0 gives no compression at
ds@1952
   229
   all (the input data is simply copied a block at a time).
ds@1952
   230
   Z_DEFAULT_COMPRESSION requests a default compromise between speed and
ds@1952
   231
   compression (currently equivalent to level 6).
ds@1952
   232
ds@1952
   233
     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
ds@1952
   234
   enough memory, Z_STREAM_ERROR if level is not a valid compression level,
ds@1952
   235
   Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
ds@1952
   236
   with the version assumed by the caller (ZLIB_VERSION).
ds@1952
   237
   msg is set to null if there is no error message.  deflateInit does not
ds@1952
   238
   perform any compression: this will be done by deflate().
ds@1952
   239
*/
ds@1952
   240
ds@1952
   241
ds@1952
   242
ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
ds@1952
   243
/*
ds@1952
   244
    deflate compresses as much data as possible, and stops when the input
ds@1952
   245
  buffer becomes empty or the output buffer becomes full. It may introduce some
ds@1952
   246
  output latency (reading input without producing any output) except when
ds@1952
   247
  forced to flush.
ds@1952
   248
ds@1952
   249
    The detailed semantics are as follows. deflate performs one or both of the
ds@1952
   250
  following actions:
ds@1952
   251
ds@1952
   252
  - Compress more input starting at next_in and update next_in and avail_in
ds@1952
   253
    accordingly. If not all input can be processed (because there is not
ds@1952
   254
    enough room in the output buffer), next_in and avail_in are updated and
ds@1952
   255
    processing will resume at this point for the next call of deflate().
ds@1952
   256
ds@1952
   257
  - Provide more output starting at next_out and update next_out and avail_out
ds@1952
   258
    accordingly. This action is forced if the parameter flush is non zero.
ds@1952
   259
    Forcing flush frequently degrades the compression ratio, so this parameter
ds@1952
   260
    should be set only when necessary (in interactive applications).
ds@1952
   261
    Some output may be provided even if flush is not set.
ds@1952
   262
ds@1952
   263
  Before the call of deflate(), the application should ensure that at least
ds@1952
   264
  one of the actions is possible, by providing more input and/or consuming
ds@1952
   265
  more output, and updating avail_in or avail_out accordingly; avail_out
ds@1952
   266
  should never be zero before the call. The application can consume the
ds@1952
   267
  compressed output when it wants, for example when the output buffer is full
ds@1952
   268
  (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
ds@1952
   269
  and with zero avail_out, it must be called again after making room in the
ds@1952
   270
  output buffer because there might be more output pending.
ds@1952
   271
ds@1952
   272
    Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
ds@1952
   273
  decide how much data to accumualte before producing output, in order to
ds@1952
   274
  maximize compression.
ds@1952
   275
ds@1952
   276
    If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
ds@1952
   277
  flushed to the output buffer and the output is aligned on a byte boundary, so
ds@1952
   278
  that the decompressor can get all input data available so far. (In particular
ds@1952
   279
  avail_in is zero after the call if enough output space has been provided
ds@1952
   280
  before the call.)  Flushing may degrade compression for some compression
ds@1952
   281
  algorithms and so it should be used only when necessary.
ds@1952
   282
ds@1952
   283
    If flush is set to Z_FULL_FLUSH, all output is flushed as with
ds@1952
   284
  Z_SYNC_FLUSH, and the compression state is reset so that decompression can
ds@1952
   285
  restart from this point if previous compressed data has been damaged or if
ds@1952
   286
  random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
ds@1952
   287
  compression.
ds@1952
   288
ds@1952
   289
    If deflate returns with avail_out == 0, this function must be called again
ds@1952
   290
  with the same value of the flush parameter and more output space (updated
ds@1952
   291
  avail_out), until the flush is complete (deflate returns with non-zero
ds@1952
   292
  avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
ds@1952
   293
  avail_out is greater than six to avoid repeated flush markers due to
ds@1952
   294
  avail_out == 0 on return.
ds@1952
   295
ds@1952
   296
    If the parameter flush is set to Z_FINISH, pending input is processed,
ds@1952
   297
  pending output is flushed and deflate returns with Z_STREAM_END if there
ds@1952
   298
  was enough output space; if deflate returns with Z_OK, this function must be
ds@1952
   299
  called again with Z_FINISH and more output space (updated avail_out) but no
ds@1952
   300
  more input data, until it returns with Z_STREAM_END or an error. After
ds@1952
   301
  deflate has returned Z_STREAM_END, the only possible operations on the
ds@1952
   302
  stream are deflateReset or deflateEnd.
ds@1952
   303
ds@1952
   304
    Z_FINISH can be used immediately after deflateInit if all the compression
ds@1952
   305
  is to be done in a single step. In this case, avail_out must be at least
ds@1952
   306
  the value returned by deflateBound (see below). If deflate does not return
ds@1952
   307
  Z_STREAM_END, then it must be called again as described above.
ds@1952
   308
ds@1952
   309
    deflate() sets strm->adler to the adler32 checksum of all input read
ds@1952
   310
  so far (that is, total_in bytes).
ds@1952
   311
ds@1952
   312
    deflate() may update strm->data_type if it can make a good guess about
ds@1952
   313
  the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered
ds@1952
   314
  binary. This field is only for information purposes and does not affect
ds@1952
   315
  the compression algorithm in any manner.
ds@1952
   316
ds@1952
   317
    deflate() returns Z_OK if some progress has been made (more input
ds@1952
   318
  processed or more output produced), Z_STREAM_END if all input has been
ds@1952
   319
  consumed and all output has been produced (only when flush is set to
ds@1952
   320
  Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
ds@1952
   321
  if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
ds@1952
   322
  (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not
ds@1952
   323
  fatal, and deflate() can be called again with more input and more output
ds@1952
   324
  space to continue compressing.
ds@1952
   325
*/
ds@1952
   326
ds@1952
   327
ds@1952
   328
ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
ds@1952
   329
/*
ds@1952
   330
     All dynamically allocated data structures for this stream are freed.
ds@1952
   331
   This function discards any unprocessed input and does not flush any
ds@1952
   332
   pending output.
ds@1952
   333
ds@1952
   334
     deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
ds@1952
   335
   stream state was inconsistent, Z_DATA_ERROR if the stream was freed
ds@1952
   336
   prematurely (some input or output was discarded). In the error case,
ds@1952
   337
   msg may be set but then points to a static string (which must not be
ds@1952
   338
   deallocated).
ds@1952
   339
*/
ds@1952
   340
ds@1952
   341
ds@1952
   342
/*
ds@1952
   343
ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
ds@1952
   344
ds@1952
   345
     Initializes the internal stream state for decompression. The fields
ds@1952
   346
   next_in, avail_in, zalloc, zfree and opaque must be initialized before by
ds@1952
   347
   the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
ds@1952
   348
   value depends on the compression method), inflateInit determines the
ds@1952
   349
   compression method from the zlib header and allocates all data structures
ds@1952
   350
   accordingly; otherwise the allocation will be deferred to the first call of
ds@1952
   351
   inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to
ds@1952
   352
   use default allocation functions.
ds@1952
   353
ds@1952
   354
     inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
ds@1952
   355
   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
ds@1952
   356
   version assumed by the caller.  msg is set to null if there is no error
ds@1952
   357
   message. inflateInit does not perform any decompression apart from reading
ds@1952
   358
   the zlib header if present: this will be done by inflate().  (So next_in and
ds@1952
   359
   avail_in may be modified, but next_out and avail_out are unchanged.)
ds@1952
   360
*/
ds@1952
   361
ds@1952
   362
ds@1952
   363
ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
ds@1952
   364
/*
ds@1952
   365
    inflate decompresses as much data as possible, and stops when the input
ds@1952
   366
  buffer becomes empty or the output buffer becomes full. It may introduce
ds@1952
   367
  some output latency (reading input without producing any output) except when
ds@1952
   368
  forced to flush.
ds@1952
   369
ds@1952
   370
  The detailed semantics are as follows. inflate performs one or both of the
ds@1952
   371
  following actions:
ds@1952
   372
ds@1952
   373
  - Decompress more input starting at next_in and update next_in and avail_in
ds@1952
   374
    accordingly. If not all input can be processed (because there is not
ds@1952
   375
    enough room in the output buffer), next_in is updated and processing
ds@1952
   376
    will resume at this point for the next call of inflate().
ds@1952
   377
ds@1952
   378
  - Provide more output starting at next_out and update next_out and avail_out
ds@1952
   379
    accordingly.  inflate() provides as much output as possible, until there
ds@1952
   380
    is no more input data or no more space in the output buffer (see below
ds@1952
   381
    about the flush parameter).
ds@1952
   382
ds@1952
   383
  Before the call of inflate(), the application should ensure that at least
ds@1952
   384
  one of the actions is possible, by providing more input and/or consuming
ds@1952
   385
  more output, and updating the next_* and avail_* values accordingly.
ds@1952
   386
  The application can consume the uncompressed output when it wants, for
ds@1952
   387
  example when the output buffer is full (avail_out == 0), or after each
ds@1952
   388
  call of inflate(). If inflate returns Z_OK and with zero avail_out, it
ds@1952
   389
  must be called again after making room in the output buffer because there
ds@1952
   390
  might be more output pending.
ds@1952
   391
ds@1952
   392
    The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
ds@1952
   393
  Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much
ds@1952
   394
  output as possible to the output buffer. Z_BLOCK requests that inflate() stop
ds@1952
   395
  if and when it gets to the next deflate block boundary. When decoding the
ds@1952
   396
  zlib or gzip format, this will cause inflate() to return immediately after
ds@1952
   397
  the header and before the first block. When doing a raw inflate, inflate()
ds@1952
   398
  will go ahead and process the first block, and will return when it gets to
ds@1952
   399
  the end of that block, or when it runs out of data.
ds@1952
   400
ds@1952
   401
    The Z_BLOCK option assists in appending to or combining deflate streams.
ds@1952
   402
  Also to assist in this, on return inflate() will set strm->data_type to the
ds@1952
   403
  number of unused bits in the last byte taken from strm->next_in, plus 64
ds@1952
   404
  if inflate() is currently decoding the last block in the deflate stream,
ds@1952
   405
  plus 128 if inflate() returned immediately after decoding an end-of-block
ds@1952
   406
  code or decoding the complete header up to just before the first byte of the
ds@1952
   407
  deflate stream. The end-of-block will not be indicated until all of the
ds@1952
   408
  uncompressed data from that block has been written to strm->next_out.  The
ds@1952
   409
  number of unused bits may in general be greater than seven, except when
ds@1952
   410
  bit 7 of data_type is set, in which case the number of unused bits will be
ds@1952
   411
  less than eight.
ds@1952
   412
ds@1952
   413
    inflate() should normally be called until it returns Z_STREAM_END or an
ds@1952
   414
  error. However if all decompression is to be performed in a single step
ds@1952
   415
  (a single call of inflate), the parameter flush should be set to
ds@1952
   416
  Z_FINISH. In this case all pending input is processed and all pending
ds@1952
   417
  output is flushed; avail_out must be large enough to hold all the
ds@1952
   418
  uncompressed data. (The size of the uncompressed data may have been saved
ds@1952
   419
  by the compressor for this purpose.) The next operation on this stream must
ds@1952
   420
  be inflateEnd to deallocate the decompression state. The use of Z_FINISH
ds@1952
   421
  is never required, but can be used to inform inflate that a faster approach
ds@1952
   422
  may be used for the single inflate() call.
ds@1952
   423
ds@1952
   424
     In this implementation, inflate() always flushes as much output as
ds@1952
   425
  possible to the output buffer, and always uses the faster approach on the
ds@1952
   426
  first call. So the only effect of the flush parameter in this implementation
ds@1952
   427
  is on the return value of inflate(), as noted below, or when it returns early
ds@1952
   428
  because Z_BLOCK is used.
ds@1952
   429
ds@1952
   430
     If a preset dictionary is needed after this call (see inflateSetDictionary
ds@1952
   431
  below), inflate sets strm->adler to the adler32 checksum of the dictionary
ds@1952
   432
  chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
ds@1952
   433
  strm->adler to the adler32 checksum of all output produced so far (that is,
ds@1952
   434
  total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
ds@1952
   435
  below. At the end of the stream, inflate() checks that its computed adler32
ds@1952
   436
  checksum is equal to that saved by the compressor and returns Z_STREAM_END
ds@1952
   437
  only if the checksum is correct.
ds@1952
   438
ds@1952
   439
    inflate() will decompress and check either zlib-wrapped or gzip-wrapped
ds@1952
   440
  deflate data.  The header type is detected automatically.  Any information
ds@1952
   441
  contained in the gzip header is not retained, so applications that need that
ds@1952
   442
  information should instead use raw inflate, see inflateInit2() below, or
ds@1952
   443
  inflateBack() and perform their own processing of the gzip header and
ds@1952
   444
  trailer.
ds@1952
   445
ds@1952
   446
    inflate() returns Z_OK if some progress has been made (more input processed
ds@1952
   447
  or more output produced), Z_STREAM_END if the end of the compressed data has
ds@1952
   448
  been reached and all uncompressed output has been produced, Z_NEED_DICT if a
ds@1952
   449
  preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
ds@1952
   450
  corrupted (input stream not conforming to the zlib format or incorrect check
ds@1952
   451
  value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
ds@1952
   452
  if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
ds@1952
   453
  Z_BUF_ERROR if no progress is possible or if there was not enough room in the
ds@1952
   454
  output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
ds@1952
   455
  inflate() can be called again with more input and more output space to
ds@1952
   456
  continue decompressing. If Z_DATA_ERROR is returned, the application may then
ds@1952
   457
  call inflateSync() to look for a good compression block if a partial recovery
ds@1952
   458
  of the data is desired.
ds@1952
   459
*/
ds@1952
   460
ds@1952
   461
ds@1952
   462
ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
ds@1952
   463
/*
ds@1952
   464
     All dynamically allocated data structures for this stream are freed.
ds@1952
   465
   This function discards any unprocessed input and does not flush any
ds@1952
   466
   pending output.
ds@1952
   467
ds@1952
   468
     inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
ds@1952
   469
   was inconsistent. In the error case, msg may be set but then points to a
ds@1952
   470
   static string (which must not be deallocated).
ds@1952
   471
*/
ds@1952
   472
ds@1952
   473
                        /* Advanced functions */
ds@1952
   474
ds@1952
   475
/*
ds@1952
   476
    The following functions are needed only in some special applications.
ds@1952
   477
*/
ds@1952
   478
ds@1952
   479
/*
ds@1952
   480
ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
ds@1952
   481
                                     int  level,
ds@1952
   482
                                     int  method,
ds@1952
   483
                                     int  windowBits,
ds@1952
   484
                                     int  memLevel,
ds@1952
   485
                                     int  strategy));
ds@1952
   486
ds@1952
   487
     This is another version of deflateInit with more compression options. The
ds@1952
   488
   fields next_in, zalloc, zfree and opaque must be initialized before by
ds@1952
   489
   the caller.
ds@1952
   490
ds@1952
   491
     The method parameter is the compression method. It must be Z_DEFLATED in
ds@1952
   492
   this version of the library.
ds@1952
   493
ds@1952
   494
     The windowBits parameter is the base two logarithm of the window size
ds@1952
   495
   (the size of the history buffer). It should be in the range 8..15 for this
ds@1952
   496
   version of the library. Larger values of this parameter result in better
ds@1952
   497
   compression at the expense of memory usage. The default value is 15 if
ds@1952
   498
   deflateInit is used instead.
ds@1952
   499
ds@1952
   500
     windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
ds@1952
   501
   determines the window size. deflate() will then generate raw deflate data
ds@1952
   502
   with no zlib header or trailer, and will not compute an adler32 check value.
ds@1952
   503
ds@1952
   504
     windowBits can also be greater than 15 for optional gzip encoding. Add
ds@1952
   505
   16 to windowBits to write a simple gzip header and trailer around the
ds@1952
   506
   compressed data instead of a zlib wrapper. The gzip header will have no
ds@1952
   507
   file name, no extra data, no comment, no modification time (set to zero),
ds@1952
   508
   no header crc, and the operating system will be set to 255 (unknown).  If a
ds@1952
   509
   gzip stream is being written, strm->adler is a crc32 instead of an adler32.
ds@1952
   510
ds@1952
   511
     The memLevel parameter specifies how much memory should be allocated
ds@1952
   512
   for the internal compression state. memLevel=1 uses minimum memory but
ds@1952
   513
   is slow and reduces compression ratio; memLevel=9 uses maximum memory
ds@1952
   514
   for optimal speed. The default value is 8. See zconf.h for total memory
ds@1952
   515
   usage as a function of windowBits and memLevel.
ds@1952
   516
ds@1952
   517
     The strategy parameter is used to tune the compression algorithm. Use the
ds@1952
   518
   value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
ds@1952
   519
   filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
ds@1952
   520
   string match), or Z_RLE to limit match distances to one (run-length
ds@1952
   521
   encoding). Filtered data consists mostly of small values with a somewhat
ds@1952
   522
   random distribution. In this case, the compression algorithm is tuned to
ds@1952
   523
   compress them better. The effect of Z_FILTERED is to force more Huffman
ds@1952
   524
   coding and less string matching; it is somewhat intermediate between
ds@1952
   525
   Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as
ds@1952
   526
   Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy
ds@1952
   527
   parameter only affects the compression ratio but not the correctness of the
ds@1952
   528
   compressed output even if it is not set appropriately.  Z_FIXED prevents the
ds@1952
   529
   use of dynamic Huffman codes, allowing for a simpler decoder for special
ds@1952
   530
   applications.
ds@1952
   531
ds@1952
   532
      deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
ds@1952
   533
   memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
ds@1952
   534
   method). msg is set to null if there is no error message.  deflateInit2 does
ds@1952
   535
   not perform any compression: this will be done by deflate().
ds@1952
   536
*/
ds@1952
   537
ds@1952
   538
ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
ds@1952
   539
                                             const Bytef *dictionary,
ds@1952
   540
                                             uInt  dictLength));
ds@1952
   541
/*
ds@1952
   542
     Initializes the compression dictionary from the given byte sequence
ds@1952
   543
   without producing any compressed output. This function must be called
ds@1952
   544
   immediately after deflateInit, deflateInit2 or deflateReset, before any
ds@1952
   545
   call of deflate. The compressor and decompressor must use exactly the same
ds@1952
   546
   dictionary (see inflateSetDictionary).
ds@1952
   547
ds@1952
   548
     The dictionary should consist of strings (byte sequences) that are likely
ds@1952
   549
   to be encountered later in the data to be compressed, with the most commonly
ds@1952
   550
   used strings preferably put towards the end of the dictionary. Using a
ds@1952
   551
   dictionary is most useful when the data to be compressed is short and can be
ds@1952
   552
   predicted with good accuracy; the data can then be compressed better than
ds@1952
   553
   with the default empty dictionary.
ds@1952
   554
ds@1952
   555
     Depending on the size of the compression data structures selected by
ds@1952
   556
   deflateInit or deflateInit2, a part of the dictionary may in effect be
ds@1952
   557
   discarded, for example if the dictionary is larger than the window size in
ds@1952
   558
   deflate or deflate2. Thus the strings most likely to be useful should be
ds@1952
   559
   put at the end of the dictionary, not at the front. In addition, the
ds@1952
   560
   current implementation of deflate will use at most the window size minus
ds@1952
   561
   262 bytes of the provided dictionary.
ds@1952
   562
ds@1952
   563
     Upon return of this function, strm->adler is set to the adler32 value
ds@1952
   564
   of the dictionary; the decompressor may later use this value to determine
ds@1952
   565
   which dictionary has been used by the compressor. (The adler32 value
ds@1952
   566
   applies to the whole dictionary even if only a subset of the dictionary is
ds@1952
   567
   actually used by the compressor.) If a raw deflate was requested, then the
ds@1952
   568
   adler32 value is not computed and strm->adler is not set.
ds@1952
   569
ds@1952
   570
     deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
ds@1952
   571
   parameter is invalid (such as NULL dictionary) or the stream state is
ds@1952
   572
   inconsistent (for example if deflate has already been called for this stream
ds@1952
   573
   or if the compression method is bsort). deflateSetDictionary does not
ds@1952
   574
   perform any compression: this will be done by deflate().
ds@1952
   575
*/
ds@1952
   576
ds@1952
   577
ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
ds@1952
   578
                                    z_streamp source));
ds@1952
   579
/*
ds@1952
   580
     Sets the destination stream as a complete copy of the source stream.
ds@1952
   581
ds@1952
   582
     This function can be useful when several compression strategies will be
ds@1952
   583
   tried, for example when there are several ways of pre-processing the input
ds@1952
   584
   data with a filter. The streams that will be discarded should then be freed
ds@1952
   585
   by calling deflateEnd.  Note that deflateCopy duplicates the internal
ds@1952
   586
   compression state which can be quite large, so this strategy is slow and
ds@1952
   587
   can consume lots of memory.
ds@1952
   588
ds@1952
   589
     deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
ds@1952
   590
   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
ds@1952
   591
   (such as zalloc being NULL). msg is left unchanged in both source and
ds@1952
   592
   destination.
ds@1952
   593
*/
ds@1952
   594
ds@1952
   595
ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
ds@1952
   596
/*
ds@1952
   597
     This function is equivalent to deflateEnd followed by deflateInit,
ds@1952
   598
   but does not free and reallocate all the internal compression state.
ds@1952
   599
   The stream will keep the same compression level and any other attributes
ds@1952
   600
   that may have been set by deflateInit2.
ds@1952
   601
ds@1952
   602
      deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
ds@1952
   603
   stream state was inconsistent (such as zalloc or state being NULL).
ds@1952
   604
*/
ds@1952
   605
ds@1952
   606
ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
ds@1952
   607
                                      int level,
ds@1952
   608
                                      int strategy));
ds@1952
   609
/*
ds@1952
   610
     Dynamically update the compression level and compression strategy.  The
ds@1952
   611
   interpretation of level and strategy is as in deflateInit2.  This can be
ds@1952
   612
   used to switch between compression and straight copy of the input data, or
ds@1952
   613
   to switch to a different kind of input data requiring a different
ds@1952
   614
   strategy. If the compression level is changed, the input available so far
ds@1952
   615
   is compressed with the old level (and may be flushed); the new level will
ds@1952
   616
   take effect only at the next call of deflate().
ds@1952
   617
ds@1952
   618
     Before the call of deflateParams, the stream state must be set as for
ds@1952
   619
   a call of deflate(), since the currently available input may have to
ds@1952
   620
   be compressed and flushed. In particular, strm->avail_out must be non-zero.
ds@1952
   621
ds@1952
   622
     deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
ds@1952
   623
   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
ds@1952
   624
   if strm->avail_out was zero.
ds@1952
   625
*/
ds@1952
   626
ds@1952
   627
ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
ds@1952
   628
                                    int good_length,
ds@1952
   629
                                    int max_lazy,
ds@1952
   630
                                    int nice_length,
ds@1952
   631
                                    int max_chain));
ds@1952
   632
/*
ds@1952
   633
     Fine tune deflate's internal compression parameters.  This should only be
ds@1952
   634
   used by someone who understands the algorithm used by zlib's deflate for
ds@1952
   635
   searching for the best matching string, and even then only by the most
ds@1952
   636
   fanatic optimizer trying to squeeze out the last compressed bit for their
ds@1952
   637
   specific input data.  Read the deflate.c source code for the meaning of the
ds@1952
   638
   max_lazy, good_length, nice_length, and max_chain parameters.
ds@1952
   639
ds@1952
   640
     deflateTune() can be called after deflateInit() or deflateInit2(), and
ds@1952
   641
   returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
ds@1952
   642
 */
ds@1952
   643
ds@1952
   644
ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
ds@1952
   645
                                       uLong sourceLen));
ds@1952
   646
/*
ds@1952
   647
     deflateBound() returns an upper bound on the compressed size after
ds@1952
   648
   deflation of sourceLen bytes.  It must be called after deflateInit()
ds@1952
   649
   or deflateInit2().  This would be used to allocate an output buffer
ds@1952
   650
   for deflation in a single pass, and so would be called before deflate().
ds@1952
   651
*/
ds@1952
   652
ds@1952
   653
ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
ds@1952
   654
                                     int bits,
ds@1952
   655
                                     int value));
ds@1952
   656
/*
ds@1952
   657
     deflatePrime() inserts bits in the deflate output stream.  The intent
ds@1952
   658
  is that this function is used to start off the deflate output with the
ds@1952
   659
  bits leftover from a previous deflate stream when appending to it.  As such,
ds@1952
   660
  this function can only be used for raw deflate, and must be used before the
ds@1952
   661
  first deflate() call after a deflateInit2() or deflateReset().  bits must be
ds@1952
   662
  less than or equal to 16, and that many of the least significant bits of
ds@1952
   663
  value will be inserted in the output.
ds@1952
   664
ds@1952
   665
      deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
ds@1952
   666
   stream state was inconsistent.
ds@1952
   667
*/
ds@1952
   668
ds@1952
   669
ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
ds@1952
   670
                                         gz_headerp head));
ds@1952
   671
/*
ds@1952
   672
      deflateSetHeader() provides gzip header information for when a gzip
ds@1952
   673
   stream is requested by deflateInit2().  deflateSetHeader() may be called
ds@1952
   674
   after deflateInit2() or deflateReset() and before the first call of
ds@1952
   675
   deflate().  The text, time, os, extra field, name, and comment information
ds@1952
   676
   in the provided gz_header structure are written to the gzip header (xflag is
ds@1952
   677
   ignored -- the extra flags are set according to the compression level).  The
ds@1952
   678
   caller must assure that, if not Z_NULL, name and comment are terminated with
ds@1952
   679
   a zero byte, and that if extra is not Z_NULL, that extra_len bytes are
ds@1952
   680
   available there.  If hcrc is true, a gzip header crc is included.  Note that
ds@1952
   681
   the current versions of the command-line version of gzip (up through version
ds@1952
   682
   1.3.x) do not support header crc's, and will report that it is a "multi-part
ds@1952
   683
   gzip file" and give up.
ds@1952
   684
ds@1952
   685
      If deflateSetHeader is not used, the default gzip header has text false,
ds@1952
   686
   the time set to zero, and os set to 255, with no extra, name, or comment
ds@1952
   687
   fields.  The gzip header is returned to the default state by deflateReset().
ds@1952
   688
ds@1952
   689
      deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
ds@1952
   690
   stream state was inconsistent.
ds@1952
   691
*/
ds@1952
   692
ds@1952
   693
/*
ds@1952
   694
ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
ds@1952
   695
                                     int  windowBits));
ds@1952
   696
ds@1952
   697
     This is another version of inflateInit with an extra parameter. The
ds@1952
   698
   fields next_in, avail_in, zalloc, zfree and opaque must be initialized
ds@1952
   699
   before by the caller.
ds@1952
   700
ds@1952
   701
     The windowBits parameter is the base two logarithm of the maximum window
ds@1952
   702
   size (the size of the history buffer).  It should be in the range 8..15 for
ds@1952
   703
   this version of the library. The default value is 15 if inflateInit is used
ds@1952
   704
   instead. windowBits must be greater than or equal to the windowBits value
ds@1952
   705
   provided to deflateInit2() while compressing, or it must be equal to 15 if
ds@1952
   706
   deflateInit2() was not used. If a compressed stream with a larger window
ds@1952
   707
   size is given as input, inflate() will return with the error code
ds@1952
   708
   Z_DATA_ERROR instead of trying to allocate a larger window.
ds@1952
   709
ds@1952
   710
     windowBits can also be -8..-15 for raw inflate. In this case, -windowBits
ds@1952
   711
   determines the window size. inflate() will then process raw deflate data,
ds@1952
   712
   not looking for a zlib or gzip header, not generating a check value, and not
ds@1952
   713
   looking for any check values for comparison at the end of the stream. This
ds@1952
   714
   is for use with other formats that use the deflate compressed data format
ds@1952
   715
   such as zip.  Those formats provide their own check values. If a custom
ds@1952
   716
   format is developed using the raw deflate format for compressed data, it is
ds@1952
   717
   recommended that a check value such as an adler32 or a crc32 be applied to
ds@1952
   718
   the uncompressed data as is done in the zlib, gzip, and zip formats.  For
ds@1952
   719
   most applications, the zlib format should be used as is. Note that comments
ds@1952
   720
   above on the use in deflateInit2() applies to the magnitude of windowBits.
ds@1952
   721
ds@1952
   722
     windowBits can also be greater than 15 for optional gzip decoding. Add
ds@1952
   723
   32 to windowBits to enable zlib and gzip decoding with automatic header
ds@1952
   724
   detection, or add 16 to decode only the gzip format (the zlib format will
ds@1952
   725
   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is
ds@1952
   726
   a crc32 instead of an adler32.
ds@1952
   727
ds@1952
   728
     inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
ds@1952
   729
   memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg
ds@1952
   730
   is set to null if there is no error message.  inflateInit2 does not perform
ds@1952
   731
   any decompression apart from reading the zlib header if present: this will
ds@1952
   732
   be done by inflate(). (So next_in and avail_in may be modified, but next_out
ds@1952
   733
   and avail_out are unchanged.)
ds@1952
   734
*/
ds@1952
   735
ds@1952
   736
ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
ds@1952
   737
                                             const Bytef *dictionary,
ds@1952
   738
                                             uInt  dictLength));
ds@1952
   739
/*
ds@1952
   740
     Initializes the decompression dictionary from the given uncompressed byte
ds@1952
   741
   sequence. This function must be called immediately after a call of inflate,
ds@1952
   742
   if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
ds@1952
   743
   can be determined from the adler32 value returned by that call of inflate.
ds@1952
   744
   The compressor and decompressor must use exactly the same dictionary (see
ds@1952
   745
   deflateSetDictionary).  For raw inflate, this function can be called
ds@1952
   746
   immediately after inflateInit2() or inflateReset() and before any call of
ds@1952
   747
   inflate() to set the dictionary.  The application must insure that the
ds@1952
   748
   dictionary that was used for compression is provided.
ds@1952
   749
ds@1952
   750
     inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
ds@1952
   751
   parameter is invalid (such as NULL dictionary) or the stream state is
ds@1952
   752
   inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
ds@1952
   753
   expected one (incorrect adler32 value). inflateSetDictionary does not
ds@1952
   754
   perform any decompression: this will be done by subsequent calls of
ds@1952
   755
   inflate().
ds@1952
   756
*/
ds@1952
   757
ds@1952
   758
ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
ds@1952
   759
/*
ds@1952
   760
    Skips invalid compressed data until a full flush point (see above the
ds@1952
   761
  description of deflate with Z_FULL_FLUSH) can be found, or until all
ds@1952
   762
  available input is skipped. No output is provided.
ds@1952
   763
ds@1952
   764
    inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
ds@1952
   765
  if no more input was provided, Z_DATA_ERROR if no flush point has been found,
ds@1952
   766
  or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
ds@1952
   767
  case, the application may save the current current value of total_in which
ds@1952
   768
  indicates where valid compressed data was found. In the error case, the
ds@1952
   769
  application may repeatedly call inflateSync, providing more input each time,
ds@1952
   770
  until success or end of the input data.
ds@1952
   771
*/
ds@1952
   772
ds@1952
   773
ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
ds@1952
   774
                                    z_streamp source));
ds@1952
   775
/*
ds@1952
   776
     Sets the destination stream as a complete copy of the source stream.
ds@1952
   777
ds@1952
   778
     This function can be useful when randomly accessing a large stream.  The
ds@1952
   779
   first pass through the stream can periodically record the inflate state,
ds@1952
   780
   allowing restarting inflate at those points when randomly accessing the
ds@1952
   781
   stream.
ds@1952
   782
ds@1952
   783
     inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
ds@1952
   784
   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
ds@1952
   785
   (such as zalloc being NULL). msg is left unchanged in both source and
ds@1952
   786
   destination.
ds@1952
   787
*/
ds@1952
   788
ds@1952
   789
ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
ds@1952
   790
/*
ds@1952
   791
     This function is equivalent to inflateEnd followed by inflateInit,
ds@1952
   792
   but does not free and reallocate all the internal decompression state.
ds@1952
   793
   The stream will keep attributes that may have been set by inflateInit2.
ds@1952
   794
ds@1952
   795
      inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
ds@1952
   796
   stream state was inconsistent (such as zalloc or state being NULL).
ds@1952
   797
*/
ds@1952
   798
ds@1952
   799
ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
ds@1952
   800
                                     int bits,
ds@1952
   801
                                     int value));
ds@1952
   802
/*
ds@1952
   803
     This function inserts bits in the inflate input stream.  The intent is
ds@1952
   804
  that this function is used to start inflating at a bit position in the
ds@1952
   805
  middle of a byte.  The provided bits will be used before any bytes are used
ds@1952
   806
  from next_in.  This function should only be used with raw inflate, and
ds@1952
   807
  should be used before the first inflate() call after inflateInit2() or
ds@1952
   808
  inflateReset().  bits must be less than or equal to 16, and that many of the
ds@1952
   809
  least significant bits of value will be inserted in the input.
ds@1952
   810
ds@1952
   811
      inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
ds@1952
   812
   stream state was inconsistent.
ds@1952
   813
*/
ds@1952
   814
ds@1952
   815
ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
ds@1952
   816
                                         gz_headerp head));
ds@1952
   817
/*
ds@1952
   818
      inflateGetHeader() requests that gzip header information be stored in the
ds@1952
   819
   provided gz_header structure.  inflateGetHeader() may be called after
ds@1952
   820
   inflateInit2() or inflateReset(), and before the first call of inflate().
ds@1952
   821
   As inflate() processes the gzip stream, head->done is zero until the header
ds@1952
   822
   is completed, at which time head->done is set to one.  If a zlib stream is
ds@1952
   823
   being decoded, then head->done is set to -1 to indicate that there will be
ds@1952
   824
   no gzip header information forthcoming.  Note that Z_BLOCK can be used to
ds@1952
   825
   force inflate() to return immediately after header processing is complete
ds@1952
   826
   and before any actual data is decompressed.
ds@1952
   827
ds@1952
   828
      The text, time, xflags, and os fields are filled in with the gzip header
ds@1952
   829
   contents.  hcrc is set to true if there is a header CRC.  (The header CRC
ds@1952
   830
   was valid if done is set to one.)  If extra is not Z_NULL, then extra_max
ds@1952
   831
   contains the maximum number of bytes to write to extra.  Once done is true,
ds@1952
   832
   extra_len contains the actual extra field length, and extra contains the
ds@1952
   833
   extra field, or that field truncated if extra_max is less than extra_len.
ds@1952
   834
   If name is not Z_NULL, then up to name_max characters are written there,
ds@1952
   835
   terminated with a zero unless the length is greater than name_max.  If
ds@1952
   836
   comment is not Z_NULL, then up to comm_max characters are written there,
ds@1952
   837
   terminated with a zero unless the length is greater than comm_max.  When
ds@1952
   838
   any of extra, name, or comment are not Z_NULL and the respective field is
ds@1952
   839
   not present in the header, then that field is set to Z_NULL to signal its
ds@1952
   840
   absence.  This allows the use of deflateSetHeader() with the returned
ds@1952
   841
   structure to duplicate the header.  However if those fields are set to
ds@1952
   842
   allocated memory, then the application will need to save those pointers
ds@1952
   843
   elsewhere so that they can be eventually freed.
ds@1952
   844
ds@1952
   845
      If inflateGetHeader is not used, then the header information is simply
ds@1952
   846
   discarded.  The header is always checked for validity, including the header
ds@1952
   847
   CRC if present.  inflateReset() will reset the process to discard the header
ds@1952
   848
   information.  The application would need to call inflateGetHeader() again to
ds@1952
   849
   retrieve the header from the next gzip stream.
ds@1952
   850
ds@1952
   851
      inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
ds@1952
   852
   stream state was inconsistent.
ds@1952
   853
*/
ds@1952
   854
ds@1952
   855
/*
ds@1952
   856
ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
ds@1952
   857
                                        unsigned char FAR *window));
ds@1952
   858
ds@1952
   859
     Initialize the internal stream state for decompression using inflateBack()
ds@1952
   860
   calls.  The fields zalloc, zfree and opaque in strm must be initialized
ds@1952
   861
   before the call.  If zalloc and zfree are Z_NULL, then the default library-
ds@1952
   862
   derived memory allocation routines are used.  windowBits is the base two
ds@1952
   863
   logarithm of the window size, in the range 8..15.  window is a caller
ds@1952
   864
   supplied buffer of that size.  Except for special applications where it is
ds@1952
   865
   assured that deflate was used with small window sizes, windowBits must be 15
ds@1952
   866
   and a 32K byte window must be supplied to be able to decompress general
ds@1952
   867
   deflate streams.
ds@1952
   868
ds@1952
   869
     See inflateBack() for the usage of these routines.
ds@1952
   870
ds@1952
   871
     inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
ds@1952
   872
   the paramaters are invalid, Z_MEM_ERROR if the internal state could not
ds@1952
   873
   be allocated, or Z_VERSION_ERROR if the version of the library does not
ds@1952
   874
   match the version of the header file.
ds@1952
   875
*/
ds@1952
   876
ds@1952
   877
typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
ds@1952
   878
typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
ds@1952
   879
ds@1952
   880
ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
ds@1952
   881
                                    in_func in, void FAR *in_desc,
ds@1952
   882
                                    out_func out, void FAR *out_desc));
ds@1952
   883
/*
ds@1952
   884
     inflateBack() does a raw inflate with a single call using a call-back
ds@1952
   885
   interface for input and output.  This is more efficient than inflate() for
ds@1952
   886
   file i/o applications in that it avoids copying between the output and the
ds@1952
   887
   sliding window by simply making the window itself the output buffer.  This
ds@1952
   888
   function trusts the application to not change the output buffer passed by
ds@1952
   889
   the output function, at least until inflateBack() returns.
ds@1952
   890
ds@1952
   891
     inflateBackInit() must be called first to allocate the internal state
ds@1952
   892
   and to initialize the state with the user-provided window buffer.
ds@1952
   893
   inflateBack() may then be used multiple times to inflate a complete, raw
ds@1952
   894
   deflate stream with each call.  inflateBackEnd() is then called to free
ds@1952
   895
   the allocated state.
ds@1952
   896
ds@1952
   897
     A raw deflate stream is one with no zlib or gzip header or trailer.
ds@1952
   898
   This routine would normally be used in a utility that reads zip or gzip
ds@1952
   899
   files and writes out uncompressed files.  The utility would decode the
ds@1952
   900
   header and process the trailer on its own, hence this routine expects
ds@1952
   901
   only the raw deflate stream to decompress.  This is different from the
ds@1952
   902
   normal behavior of inflate(), which expects either a zlib or gzip header and
ds@1952
   903
   trailer around the deflate stream.
ds@1952
   904
ds@1952
   905
     inflateBack() uses two subroutines supplied by the caller that are then
ds@1952
   906
   called by inflateBack() for input and output.  inflateBack() calls those
ds@1952
   907
   routines until it reads a complete deflate stream and writes out all of the
ds@1952
   908
   uncompressed data, or until it encounters an error.  The function's
ds@1952
   909
   parameters and return types are defined above in the in_func and out_func
ds@1952
   910
   typedefs.  inflateBack() will call in(in_desc, &buf) which should return the
ds@1952
   911
   number of bytes of provided input, and a pointer to that input in buf.  If
ds@1952
   912
   there is no input available, in() must return zero--buf is ignored in that
ds@1952
   913
   case--and inflateBack() will return a buffer error.  inflateBack() will call
ds@1952
   914
   out(out_desc, buf, len) to write the uncompressed data buf[0..len-1].  out()
ds@1952
   915
   should return zero on success, or non-zero on failure.  If out() returns
ds@1952
   916
   non-zero, inflateBack() will return with an error.  Neither in() nor out()
ds@1952
   917
   are permitted to change the contents of the window provided to
ds@1952
   918
   inflateBackInit(), which is also the buffer that out() uses to write from.
ds@1952
   919
   The length written by out() will be at most the window size.  Any non-zero
ds@1952
   920
   amount of input may be provided by in().
ds@1952
   921
ds@1952
   922
     For convenience, inflateBack() can be provided input on the first call by
ds@1952
   923
   setting strm->next_in and strm->avail_in.  If that input is exhausted, then
ds@1952
   924
   in() will be called.  Therefore strm->next_in must be initialized before
ds@1952
   925
   calling inflateBack().  If strm->next_in is Z_NULL, then in() will be called
ds@1952
   926
   immediately for input.  If strm->next_in is not Z_NULL, then strm->avail_in
ds@1952
   927
   must also be initialized, and then if strm->avail_in is not zero, input will
ds@1952
   928
   initially be taken from strm->next_in[0 .. strm->avail_in - 1].
ds@1952
   929
ds@1952
   930
     The in_desc and out_desc parameters of inflateBack() is passed as the
ds@1952
   931
   first parameter of in() and out() respectively when they are called.  These
ds@1952
   932
   descriptors can be optionally used to pass any information that the caller-
ds@1952
   933
   supplied in() and out() functions need to do their job.
ds@1952
   934
ds@1952
   935
     On return, inflateBack() will set strm->next_in and strm->avail_in to
ds@1952
   936
   pass back any unused input that was provided by the last in() call.  The
ds@1952
   937
   return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR
ds@1952
   938
   if in() or out() returned an error, Z_DATA_ERROR if there was a format
ds@1952
   939
   error in the deflate stream (in which case strm->msg is set to indicate the
ds@1952
   940
   nature of the error), or Z_STREAM_ERROR if the stream was not properly
ds@1952
   941
   initialized.  In the case of Z_BUF_ERROR, an input or output error can be
ds@1952
   942
   distinguished using strm->next_in which will be Z_NULL only if in() returned
ds@1952
   943
   an error.  If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to
ds@1952
   944
   out() returning non-zero.  (in() will always be called before out(), so
ds@1952
   945
   strm->next_in is assured to be defined if out() returns non-zero.)  Note
ds@1952
   946
   that inflateBack() cannot return Z_OK.
ds@1952
   947
*/
ds@1952
   948
ds@1952
   949
ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
ds@1952
   950
/*
ds@1952
   951
     All memory allocated by inflateBackInit() is freed.
ds@1952
   952
ds@1952
   953
     inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream
ds@1952
   954
   state was inconsistent.
ds@1952
   955
*/
ds@1952
   956
ds@1952
   957
ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
ds@1952
   958
/* Return flags indicating compile-time options.
ds@1952
   959
ds@1952
   960
    Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
ds@1952
   961
     1.0: size of uInt
ds@1952
   962
     3.2: size of uLong
ds@1952
   963
     5.4: size of voidpf (pointer)
ds@1952
   964
     7.6: size of z_off_t
ds@1952
   965
ds@1952
   966
    Compiler, assembler, and debug options:
ds@1952
   967
     8: DEBUG
ds@1952
   968
     9: ASMV or ASMINF -- use ASM code
ds@1952
   969
     10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention
ds@1952
   970
     11: 0 (reserved)
ds@1952
   971
ds@1952
   972
    One-time table building (smaller code, but not thread-safe if true):
ds@1952
   973
     12: BUILDFIXED -- build static block decoding tables when needed
ds@1952
   974
     13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed
ds@1952
   975
     14,15: 0 (reserved)
ds@1952
   976
ds@1952
   977
    Library content (indicates missing functionality):
ds@1952
   978
     16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking
ds@1952
   979
                          deflate code when not needed)
ds@1952
   980
     17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect
ds@1952
   981
                    and decode gzip streams (to avoid linking crc code)
ds@1952
   982
     18-19: 0 (reserved)
ds@1952
   983
ds@1952
   984
    Operation variations (changes in library functionality):
ds@1952
   985
     20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate
ds@1952
   986
     21: FASTEST -- deflate algorithm with only one, lowest compression level
ds@1952
   987
     22,23: 0 (reserved)
ds@1952
   988
ds@1952
   989
    The sprintf variant used by gzprintf (zero is best):
ds@1952
   990
     24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format
ds@1952
   991
     25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure!
ds@1952
   992
     26: 0 = returns value, 1 = void -- 1 means inferred string length returned
ds@1952
   993
ds@1952
   994
    Remainder:
ds@1952
   995
     27-31: 0 (reserved)
ds@1952
   996
 */
ds@1952
   997
ds@1952
   998
ds@1952
   999
                        /* utility functions */
ds@1952
  1000
ds@1952
  1001
/*
ds@1952
  1002
     The following utility functions are implemented on top of the
ds@1952
  1003
   basic stream-oriented functions. To simplify the interface, some
ds@1952
  1004
   default options are assumed (compression level and memory usage,
ds@1952
  1005
   standard memory allocation functions). The source code of these
ds@1952
  1006
   utility functions can easily be modified if you need special options.
ds@1952
  1007
*/
ds@1952
  1008
ds@1952
  1009
ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
ds@1952
  1010
                                 const Bytef *source, uLong sourceLen));
ds@1952
  1011
/*
ds@1952
  1012
     Compresses the source buffer into the destination buffer.  sourceLen is
ds@1952
  1013
   the byte length of the source buffer. Upon entry, destLen is the total
ds@1952
  1014
   size of the destination buffer, which must be at least the value returned
ds@1952
  1015
   by compressBound(sourceLen). Upon exit, destLen is the actual size of the
ds@1952
  1016
   compressed buffer.
ds@1952
  1017
     This function can be used to compress a whole file at once if the
ds@1952
  1018
   input file is mmap'ed.
ds@1952
  1019
     compress returns Z_OK if success, Z_MEM_ERROR if there was not
ds@1952
  1020
   enough memory, Z_BUF_ERROR if there was not enough room in the output
ds@1952
  1021
   buffer.
ds@1952
  1022
*/
ds@1952
  1023
ds@1952
  1024
ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
ds@1952
  1025
                                  const Bytef *source, uLong sourceLen,
ds@1952
  1026
                                  int level));
ds@1952
  1027
/*
ds@1952
  1028
     Compresses the source buffer into the destination buffer. The level
ds@1952
  1029
   parameter has the same meaning as in deflateInit.  sourceLen is the byte
ds@1952
  1030
   length of the source buffer. Upon entry, destLen is the total size of the
ds@1952
  1031
   destination buffer, which must be at least the value returned by
ds@1952
  1032
   compressBound(sourceLen). Upon exit, destLen is the actual size of the
ds@1952
  1033
   compressed buffer.
ds@1952
  1034
ds@1952
  1035
     compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
ds@1952
  1036
   memory, Z_BUF_ERROR if there was not enough room in the output buffer,
ds@1952
  1037
   Z_STREAM_ERROR if the level parameter is invalid.
ds@1952
  1038
*/
ds@1952
  1039
ds@1952
  1040
ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
ds@1952
  1041
/*
ds@1952
  1042
     compressBound() returns an upper bound on the compressed size after
ds@1952
  1043
   compress() or compress2() on sourceLen bytes.  It would be used before
ds@1952
  1044
   a compress() or compress2() call to allocate the destination buffer.
ds@1952
  1045
*/
ds@1952
  1046
ds@1952
  1047
ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
ds@1952
  1048
                                   const Bytef *source, uLong sourceLen));
ds@1952
  1049
/*
ds@1952
  1050
     Decompresses the source buffer into the destination buffer.  sourceLen is
ds@1952
  1051
   the byte length of the source buffer. Upon entry, destLen is the total
ds@1952
  1052
   size of the destination buffer, which must be large enough to hold the
ds@1952
  1053
   entire uncompressed data. (The size of the uncompressed data must have
ds@1952
  1054
   been saved previously by the compressor and transmitted to the decompressor
ds@1952
  1055
   by some mechanism outside the scope of this compression library.)
ds@1952
  1056
   Upon exit, destLen is the actual size of the compressed buffer.
ds@1952
  1057
     This function can be used to decompress a whole file at once if the
ds@1952
  1058
   input file is mmap'ed.
ds@1952
  1059
ds@1952
  1060
     uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
ds@1952
  1061
   enough memory, Z_BUF_ERROR if there was not enough room in the output
ds@1952
  1062
   buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete.
ds@1952
  1063
*/
ds@1952
  1064
ds@1952
  1065
ds@1952
  1066
typedef voidp gzFile;
ds@1952
  1067
ds@1952
  1068
ZEXTERN gzFile ZEXPORT gzopen  OF((const char *path, const char *mode));
ds@1952
  1069
/*
ds@1952
  1070
     Opens a gzip (.gz) file for reading or writing. The mode parameter
ds@1952
  1071
   is as in fopen ("rb" or "wb") but can also include a compression level
ds@1952
  1072
   ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
ds@1952
  1073
   Huffman only compression as in "wb1h", or 'R' for run-length encoding
ds@1952
  1074
   as in "wb1R". (See the description of deflateInit2 for more information
ds@1952
  1075
   about the strategy parameter.)
ds@1952
  1076
ds@1952
  1077
     gzopen can be used to read a file which is not in gzip format; in this
ds@1952
  1078
   case gzread will directly read from the file without decompression.
ds@1952
  1079
ds@1952
  1080
     gzopen returns NULL if the file could not be opened or if there was
ds@1952
  1081
   insufficient memory to allocate the (de)compression state; errno
ds@1952
  1082
   can be checked to distinguish the two cases (if errno is zero, the
ds@1952
  1083
   zlib error is Z_MEM_ERROR).  */
ds@1952
  1084
ds@1952
  1085
ZEXTERN gzFile ZEXPORT gzdopen  OF((int fd, const char *mode));
ds@1952
  1086
/*
ds@1952
  1087
     gzdopen() associates a gzFile with the file descriptor fd.  File
ds@1952
  1088
   descriptors are obtained from calls like open, dup, creat, pipe or
ds@1952
  1089
   fileno (in the file has been previously opened with fopen).
ds@1952
  1090
   The mode parameter is as in gzopen.
ds@1952
  1091
     The next call of gzclose on the returned gzFile will also close the
ds@1952
  1092
   file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
ds@1952
  1093
   descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
ds@1952
  1094
     gzdopen returns NULL if there was insufficient memory to allocate
ds@1952
  1095
   the (de)compression state.
ds@1952
  1096
*/
ds@1952
  1097
ds@1952
  1098
ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
ds@1952
  1099
/*
ds@1952
  1100
     Dynamically update the compression level or strategy. See the description
ds@1952
  1101
   of deflateInit2 for the meaning of these parameters.
ds@1952
  1102
     gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
ds@1952
  1103
   opened for writing.
ds@1952
  1104
*/
ds@1952
  1105
ds@1952
  1106
ZEXTERN int ZEXPORT    gzread  OF((gzFile file, voidp buf, unsigned len));
ds@1952
  1107
/*
ds@1952
  1108
     Reads the given number of uncompressed bytes from the compressed file.
ds@1952
  1109
   If the input file was not in gzip format, gzread copies the given number
ds@1952
  1110
   of bytes into the buffer.
ds@1952
  1111
     gzread returns the number of uncompressed bytes actually read (0 for
ds@1952
  1112
   end of file, -1 for error). */
ds@1952
  1113
ds@1952
  1114
ZEXTERN int ZEXPORT    gzwrite OF((gzFile file,
ds@1952
  1115
                                   voidpc buf, unsigned len));
ds@1952
  1116
/*
ds@1952
  1117
     Writes the given number of uncompressed bytes into the compressed file.
ds@1952
  1118
   gzwrite returns the number of uncompressed bytes actually written
ds@1952
  1119
   (0 in case of error).
ds@1952
  1120
*/
ds@1952
  1121
ds@1952
  1122
ZEXTERN int ZEXPORTVA   gzprintf OF((gzFile file, const char *format, ...));
ds@1952
  1123
/*
ds@1952
  1124
     Converts, formats, and writes the args to the compressed file under
ds@1952
  1125
   control of the format string, as in fprintf. gzprintf returns the number of
ds@1952
  1126
   uncompressed bytes actually written (0 in case of error).  The number of
ds@1952
  1127
   uncompressed bytes written is limited to 4095. The caller should assure that
ds@1952
  1128
   this limit is not exceeded. If it is exceeded, then gzprintf() will return
ds@1952
  1129
   return an error (0) with nothing written. In this case, there may also be a
ds@1952
  1130
   buffer overflow with unpredictable consequences, which is possible only if
ds@1952
  1131
   zlib was compiled with the insecure functions sprintf() or vsprintf()
ds@1952
  1132
   because the secure snprintf() or vsnprintf() functions were not available.
ds@1952
  1133
*/
ds@1952
  1134
ds@1952
  1135
ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
ds@1952
  1136
/*
ds@1952
  1137
      Writes the given null-terminated string to the compressed file, excluding
ds@1952
  1138
   the terminating null character.
ds@1952
  1139
      gzputs returns the number of characters written, or -1 in case of error.
ds@1952
  1140
*/
ds@1952
  1141
ds@1952
  1142
ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
ds@1952
  1143
/*
ds@1952
  1144
      Reads bytes from the compressed file until len-1 characters are read, or
ds@1952
  1145
   a newline character is read and transferred to buf, or an end-of-file
ds@1952
  1146
   condition is encountered.  The string is then terminated with a null
ds@1952
  1147
   character.
ds@1952
  1148
      gzgets returns buf, or Z_NULL in case of error.
ds@1952
  1149
*/
ds@1952
  1150
ds@1952
  1151
ZEXTERN int ZEXPORT    gzputc OF((gzFile file, int c));
ds@1952
  1152
/*
ds@1952
  1153
      Writes c, converted to an unsigned char, into the compressed file.
ds@1952
  1154
   gzputc returns the value that was written, or -1 in case of error.
ds@1952
  1155
*/
ds@1952
  1156
ds@1952
  1157
ZEXTERN int ZEXPORT    gzgetc OF((gzFile file));
ds@1952
  1158
/*
ds@1952
  1159
      Reads one byte from the compressed file. gzgetc returns this byte
ds@1952
  1160
   or -1 in case of end of file or error.
ds@1952
  1161
*/
ds@1952
  1162
ds@1952
  1163
ZEXTERN int ZEXPORT    gzungetc OF((int c, gzFile file));
ds@1952
  1164
/*
ds@1952
  1165
      Push one character back onto the stream to be read again later.
ds@1952
  1166
   Only one character of push-back is allowed.  gzungetc() returns the
ds@1952
  1167
   character pushed, or -1 on failure.  gzungetc() will fail if a
ds@1952
  1168
   character has been pushed but not read yet, or if c is -1. The pushed
ds@1952
  1169
   character will be discarded if the stream is repositioned with gzseek()
ds@1952
  1170
   or gzrewind().
ds@1952
  1171
*/
ds@1952
  1172
ds@1952
  1173
ZEXTERN int ZEXPORT    gzflush OF((gzFile file, int flush));
ds@1952
  1174
/*
ds@1952
  1175
     Flushes all pending output into the compressed file. The parameter
ds@1952
  1176
   flush is as in the deflate() function. The return value is the zlib
ds@1952
  1177
   error number (see function gzerror below). gzflush returns Z_OK if
ds@1952
  1178
   the flush parameter is Z_FINISH and all output could be flushed.
ds@1952
  1179
     gzflush should be called only when strictly necessary because it can
ds@1952
  1180
   degrade compression.
ds@1952
  1181
*/
ds@1952
  1182
ds@1952
  1183
ZEXTERN z_off_t ZEXPORT    gzseek OF((gzFile file,
ds@1952
  1184
                                      z_off_t offset, int whence));
ds@1952
  1185
/*
ds@1952
  1186
      Sets the starting position for the next gzread or gzwrite on the
ds@1952
  1187
   given compressed file. The offset represents a number of bytes in the
ds@1952
  1188
   uncompressed data stream. The whence parameter is defined as in lseek(2);
ds@1952
  1189
   the value SEEK_END is not supported.
ds@1952
  1190
     If the file is opened for reading, this function is emulated but can be
ds@1952
  1191
   extremely slow. If the file is opened for writing, only forward seeks are
ds@1952
  1192
   supported; gzseek then compresses a sequence of zeroes up to the new
ds@1952
  1193
   starting position.
ds@1952
  1194
ds@1952
  1195
      gzseek returns the resulting offset location as measured in bytes from
ds@1952
  1196
   the beginning of the uncompressed stream, or -1 in case of error, in
ds@1952
  1197
   particular if the file is opened for writing and the new starting position
ds@1952
  1198
   would be before the current position.
ds@1952
  1199
*/
ds@1952
  1200
ds@1952
  1201
ZEXTERN int ZEXPORT    gzrewind OF((gzFile file));
ds@1952
  1202
/*
ds@1952
  1203
     Rewinds the given file. This function is supported only for reading.
ds@1952
  1204
ds@1952
  1205
   gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
ds@1952
  1206
*/
ds@1952
  1207
ds@1952
  1208
ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));
ds@1952
  1209
/*
ds@1952
  1210
     Returns the starting position for the next gzread or gzwrite on the
ds@1952
  1211
   given compressed file. This position represents a number of bytes in the
ds@1952
  1212
   uncompressed data stream.
ds@1952
  1213
ds@1952
  1214
   gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
ds@1952
  1215
*/
ds@1952
  1216
ds@1952
  1217
ZEXTERN int ZEXPORT gzeof OF((gzFile file));
ds@1952
  1218
/*
ds@1952
  1219
     Returns 1 when EOF has previously been detected reading the given
ds@1952
  1220
   input stream, otherwise zero.
ds@1952
  1221
*/
ds@1952
  1222
ds@1952
  1223
ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
ds@1952
  1224
/*
ds@1952
  1225
     Returns 1 if file is being read directly without decompression, otherwise
ds@1952
  1226
   zero.
ds@1952
  1227
*/
ds@1952
  1228
ds@1952
  1229
ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
ds@1952
  1230
/*
ds@1952
  1231
     Flushes all pending output if necessary, closes the compressed file
ds@1952
  1232
   and deallocates all the (de)compression state. The return value is the zlib
ds@1952
  1233
   error number (see function gzerror below).
ds@1952
  1234
*/
ds@1952
  1235
ds@1952
  1236
ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
ds@1952
  1237
/*
ds@1952
  1238
     Returns the error message for the last error which occurred on the
ds@1952
  1239
   given compressed file. errnum is set to zlib error number. If an
ds@1952
  1240
   error occurred in the file system and not in the compression library,
ds@1952
  1241
   errnum is set to Z_ERRNO and the application may consult errno
ds@1952
  1242
   to get the exact error code.
ds@1952
  1243
*/
ds@1952
  1244
ds@1952
  1245
ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
ds@1952
  1246
/*
ds@1952
  1247
     Clears the error and end-of-file flags for file. This is analogous to the
ds@1952
  1248
   clearerr() function in stdio. This is useful for continuing to read a gzip
ds@1952
  1249
   file that is being written concurrently.
ds@1952
  1250
*/
ds@1952
  1251
ds@1952
  1252
                        /* checksum functions */
ds@1952
  1253
ds@1952
  1254
/*
ds@1952
  1255
     These functions are not related to compression but are exported
ds@1952
  1256
   anyway because they might be useful in applications using the
ds@1952
  1257
   compression library.
ds@1952
  1258
*/
ds@1952
  1259
ds@1952
  1260
ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
ds@1952
  1261
/*
ds@1952
  1262
     Update a running Adler-32 checksum with the bytes buf[0..len-1] and
ds@1952
  1263
   return the updated checksum. If buf is NULL, this function returns
ds@1952
  1264
   the required initial value for the checksum.
ds@1952
  1265
   An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
ds@1952
  1266
   much faster. Usage example:
ds@1952
  1267
ds@1952
  1268
     uLong adler = adler32(0L, Z_NULL, 0);
ds@1952
  1269
ds@1952
  1270
     while (read_buffer(buffer, length) != EOF) {
ds@1952
  1271
       adler = adler32(adler, buffer, length);
ds@1952
  1272
     }
ds@1952
  1273
     if (adler != original_adler) error();
ds@1952
  1274
*/
ds@1952
  1275
ds@1952
  1276
ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
ds@1952
  1277
                                          z_off_t len2));
ds@1952
  1278
/*
ds@1952
  1279
     Combine two Adler-32 checksums into one.  For two sequences of bytes, seq1
ds@1952
  1280
   and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
ds@1952
  1281
   each, adler1 and adler2.  adler32_combine() returns the Adler-32 checksum of
ds@1952
  1282
   seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.
ds@1952
  1283
*/
ds@1952
  1284
ds@1952
  1285
ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
ds@1952
  1286
/*
ds@1952
  1287
     Update a running CRC-32 with the bytes buf[0..len-1] and return the
ds@1952
  1288
   updated CRC-32. If buf is NULL, this function returns the required initial
ds@1952
  1289
   value for the for the crc. Pre- and post-conditioning (one's complement) is
ds@1952
  1290
   performed within this function so it shouldn't be done by the application.
ds@1952
  1291
   Usage example:
ds@1952
  1292
ds@1952
  1293
     uLong crc = crc32(0L, Z_NULL, 0);
ds@1952
  1294
ds@1952
  1295
     while (read_buffer(buffer, length) != EOF) {
ds@1952
  1296
       crc = crc32(crc, buffer, length);
ds@1952
  1297
     }
ds@1952
  1298
     if (crc != original_crc) error();
ds@1952
  1299
*/
ds@1952
  1300
ds@1952
  1301
ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
ds@1952
  1302
ds@1952
  1303
/*
ds@1952
  1304
     Combine two CRC-32 check values into one.  For two sequences of bytes,
ds@1952
  1305
   seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
ds@1952
  1306
   calculated for each, crc1 and crc2.  crc32_combine() returns the CRC-32
ds@1952
  1307
   check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and
ds@1952
  1308
   len2.
ds@1952
  1309
*/
ds@1952
  1310
ds@1952
  1311
ds@1952
  1312
                        /* various hacks, don't look :) */
ds@1952
  1313
ds@1952
  1314
/* deflateInit and inflateInit are macros to allow checking the zlib version
ds@1952
  1315
 * and the compiler's view of z_stream:
ds@1952
  1316
 */
ds@1952
  1317
ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
ds@1952
  1318
                                     const char *version, int stream_size));
ds@1952
  1319
ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
ds@1952
  1320
                                     const char *version, int stream_size));
ds@1952
  1321
ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int  level, int  method,
ds@1952
  1322
                                      int windowBits, int memLevel,
ds@1952
  1323
                                      int strategy, const char *version,
ds@1952
  1324
                                      int stream_size));
ds@1952
  1325
ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,
ds@1952
  1326
                                      const char *version, int stream_size));
ds@1952
  1327
ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
ds@1952
  1328
                                         unsigned char FAR *window,
ds@1952
  1329
                                         const char *version,
ds@1952
  1330
                                         int stream_size));
ds@1952
  1331
#define deflateInit(strm, level) \
ds@1952
  1332
        deflateInit_((strm), (level),       ZLIB_VERSION, sizeof(z_stream))
ds@1952
  1333
#define inflateInit(strm) \
ds@1952
  1334
        inflateInit_((strm),                ZLIB_VERSION, sizeof(z_stream))
ds@1952
  1335
#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
ds@1952
  1336
        deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
ds@1952
  1337
                      (strategy),           ZLIB_VERSION, sizeof(z_stream))
ds@1952
  1338
#define inflateInit2(strm, windowBits) \
ds@1952
  1339
        inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
ds@1952
  1340
#define inflateBackInit(strm, windowBits, window) \
ds@1952
  1341
        inflateBackInit_((strm), (windowBits), (window), \
ds@1952
  1342
        ZLIB_VERSION, sizeof(z_stream))
ds@1952
  1343
ds@1952
  1344
ds@1952
  1345
#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
ds@1952
  1346
    struct internal_state {int dummy;}; /* hack for buggy compilers */
ds@1952
  1347
#endif
ds@1952
  1348
ds@1952
  1349
ZEXTERN const char   * ZEXPORT zError           OF((int));
ds@1952
  1350
ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp z));
ds@1952
  1351
ZEXTERN const uLongf * ZEXPORT get_crc_table    OF((void));
ds@1952
  1352
ds@1952
  1353
#ifdef __cplusplus
ds@1952
  1354
}
ds@1952
  1355
#endif
ds@1952
  1356
ds@1952
  1357
#endif /* ZLIB_H */