~ubuntu-branches/ubuntu/trusty/rsync/trusty

« back to all changes in this revision

Viewing changes to zlib/zlib.h

  • Committer: Package Import Robot
  • Author(s): Paul Slootman
  • Date: 2013-10-27 12:01:10 UTC
  • mfrom: (1.1.13) (2.1.11 sid)
  • Revision ID: package-import@ubuntu.com-20131027120110-mpr03n5scqmf40mi
Tags: 3.1.0-2
fix build failure if zlib1g-dev package is not installed;
solved by building without the included zlib source and adding a
build-depends on zlib1g-dev >= 1:1.2.8
closes:32379

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* zlib.h -- interface of the 'zlib' general purpose compression library
2
 
  version 1.2.3, July 18th, 2005
 
2
  version 1.2.8, April 28th, 2013
3
3
 
4
 
  Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
 
4
  Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
5
5
 
6
6
  This software is provided 'as-is', without any express or implied
7
7
  warranty.  In no event will the authors be held liable for any damages
24
24
 
25
25
 
26
26
  The data format used by the zlib library is described by RFCs (Request for
27
 
  Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt
28
 
  (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
 
27
  Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950
 
28
  (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format).
29
29
*/
30
30
 
31
31
#ifndef ZLIB_H
37
37
extern "C" {
38
38
#endif
39
39
 
40
 
#define ZLIB_VERSION "1.2.3"
41
 
#define ZLIB_VERNUM 0x1230
 
40
#define ZLIB_VERSION "1.2.8"
 
41
#define ZLIB_VERNUM 0x1280
 
42
#define ZLIB_VER_MAJOR 1
 
43
#define ZLIB_VER_MINOR 2
 
44
#define ZLIB_VER_REVISION 8
 
45
#define ZLIB_VER_SUBREVISION 0
42
46
 
43
47
/*
44
 
     The 'zlib' compression library provides in-memory compression and
45
 
  decompression functions, including integrity checks of the uncompressed
46
 
  data.  This version of the library supports only one compression method
47
 
  (deflation) but other algorithms will be added later and will have the same
48
 
  stream interface.
 
48
    The 'zlib' compression library provides in-memory compression and
 
49
  decompression functions, including integrity checks of the uncompressed data.
 
50
  This version of the library supports only one compression method (deflation)
 
51
  but other algorithms will be added later and will have the same stream
 
52
  interface.
49
53
 
50
 
     Compression can be done in a single step if the buffers are large
51
 
  enough (for example if an input file is mmap'ed), or can be done by
52
 
  repeated calls of the compression function.  In the latter case, the
53
 
  application must provide more input and/or consume the output
 
54
    Compression can be done in a single step if the buffers are large enough,
 
55
  or can be done by repeated calls of the compression function.  In the latter
 
56
  case, the application must provide more input and/or consume the output
54
57
  (providing more output space) before each call.
55
58
 
56
 
     The compressed data format used by default by the in-memory functions is
 
59
    The compressed data format used by default by the in-memory functions is
57
60
  the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
58
61
  around a deflate stream, which is itself documented in RFC 1951.
59
62
 
60
 
     The library also supports reading and writing files in gzip (.gz) format
 
63
    The library also supports reading and writing files in gzip (.gz) format
61
64
  with an interface similar to that of stdio using the functions that start
62
65
  with "gz".  The gzip format is different from the zlib format.  gzip is a
63
66
  gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
64
67
 
65
 
     This library can optionally read and write gzip streams in memory as well.
 
68
    This library can optionally read and write gzip streams in memory as well.
66
69
 
67
 
     The zlib format was designed to be compact and fast for use in memory
 
70
    The zlib format was designed to be compact and fast for use in memory
68
71
  and on communications channels.  The gzip format was designed for single-
69
72
  file compression on file systems, has a larger header than zlib to maintain
70
73
  directory information, and uses a different, slower check method than zlib.
71
74
 
72
 
     The library does not install any signal handler. The decoder checks
73
 
  the consistency of the compressed data, so the library should never
74
 
  crash even in case of corrupted input.
 
75
    The library does not install any signal handler.  The decoder checks
 
76
  the consistency of the compressed data, so the library should never crash
 
77
  even in case of corrupted input.
75
78
*/
76
79
 
77
80
typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
80
83
struct internal_state;
81
84
 
82
85
typedef struct z_stream_s {
83
 
    Bytef    *next_in;  /* next input byte */
 
86
    z_const Bytef *next_in;     /* next input byte */
84
87
    uInt     avail_in;  /* number of bytes available at next_in */
85
 
    uLong    total_in;  /* total nb of input bytes read so far */
 
88
    uLong    total_in;  /* total number of input bytes read so far */
86
89
 
87
90
    Bytef    *next_out; /* next output byte should be put there */
88
91
    uInt     avail_out; /* remaining free space at next_out */
89
 
    uLong    total_out; /* total nb of bytes output so far */
 
92
    uLong    total_out; /* total number of bytes output so far */
90
93
 
91
 
    char     *msg;      /* last error message, NULL if no error */
 
94
    z_const char *msg;  /* last error message, NULL if no error */
92
95
    struct internal_state FAR *state; /* not visible by applications */
93
96
 
94
97
    alloc_func zalloc;  /* used to allocate the internal state */
126
129
typedef gz_header FAR *gz_headerp;
127
130
 
128
131
/*
129
 
   The application must update next_in and avail_in when avail_in has
130
 
   dropped to zero. It must update next_out and avail_out when avail_out
131
 
   has dropped to zero. The application must initialize zalloc, zfree and
132
 
   opaque before calling the init function. All other fields are set by the
133
 
   compression library and must not be updated by the application.
 
132
     The application must update next_in and avail_in when avail_in has dropped
 
133
   to zero.  It must update next_out and avail_out when avail_out has dropped
 
134
   to zero.  The application must initialize zalloc, zfree and opaque before
 
135
   calling the init function.  All other fields are set by the compression
 
136
   library and must not be updated by the application.
134
137
 
135
 
   The opaque value provided by the application will be passed as the first
136
 
   parameter for calls of zalloc and zfree. This can be useful for custom
137
 
   memory management. The compression library attaches no meaning to the
 
138
     The opaque value provided by the application will be passed as the first
 
139
   parameter for calls of zalloc and zfree.  This can be useful for custom
 
140
   memory management.  The compression library attaches no meaning to the
138
141
   opaque value.
139
142
 
140
 
   zalloc must return Z_NULL if there is not enough memory for the object.
 
143
     zalloc must return Z_NULL if there is not enough memory for the object.
141
144
   If zlib is used in a multi-threaded application, zalloc and zfree must be
142
145
   thread safe.
143
146
 
144
 
   On 16-bit systems, the functions zalloc and zfree must be able to allocate
145
 
   exactly 65536 bytes, but will not be required to allocate more than this
146
 
   if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
147
 
   pointers returned by zalloc for objects of exactly 65536 bytes *must*
148
 
   have their offset normalized to zero. The default allocation function
149
 
   provided by this library ensures this (see zutil.c). To reduce memory
150
 
   requirements and avoid any allocation of 64K objects, at the expense of
151
 
   compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
 
147
     On 16-bit systems, the functions zalloc and zfree must be able to allocate
 
148
   exactly 65536 bytes, but will not be required to allocate more than this if
 
149
   the symbol MAXSEG_64K is defined (see zconf.h).  WARNING: On MSDOS, pointers
 
150
   returned by zalloc for objects of exactly 65536 bytes *must* have their
 
151
   offset normalized to zero.  The default allocation function provided by this
 
152
   library ensures this (see zutil.c).  To reduce memory requirements and avoid
 
153
   any allocation of 64K objects, at the expense of compression ratio, compile
 
154
   the library with -DMAX_WBITS=14 (see zconf.h).
152
155
 
153
 
   The fields total_in and total_out can be used for statistics or
154
 
   progress reports. After compression, total_in holds the total size of
155
 
   the uncompressed data and may be saved for use in the decompressor
156
 
   (particularly if the decompressor wants to decompress everything in
157
 
   a single step).
 
156
     The fields total_in and total_out can be used for statistics or progress
 
157
   reports.  After compression, total_in holds the total size of the
 
158
   uncompressed data and may be saved for use in the decompressor (particularly
 
159
   if the decompressor wants to decompress everything in a single step).
158
160
*/
159
161
 
160
162
                        /* constants */
161
163
 
162
164
#define Z_NO_FLUSH      0
163
 
#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
 
165
#define Z_PARTIAL_FLUSH 1
164
166
#define Z_SYNC_FLUSH    2
165
167
#define Z_FULL_FLUSH    3
166
168
#define Z_FINISH        4
167
169
#define Z_BLOCK         5
 
170
#define Z_TREES         6
168
171
/* Allowed flush values; see deflate() and inflate() below for details */
169
 
#define Z_INSERT_ONLY   6
 
172
#define Z_INSERT_ONLY   7
170
173
 
171
174
#define Z_OK            0
172
175
#define Z_STREAM_END    1
177
180
#define Z_MEM_ERROR    (-4)
178
181
#define Z_BUF_ERROR    (-5)
179
182
#define Z_VERSION_ERROR (-6)
180
 
/* Return codes for the compression/decompression functions. Negative
181
 
 * values are errors, positive values are used for special but normal events.
 
183
/* Return codes for the compression/decompression functions. Negative values
 
184
 * are errors, positive values are used for special but normal events.
182
185
 */
183
186
 
184
187
#define Z_NO_COMPRESSION         0
208
211
#define zlib_version zlibVersion()
209
212
/* for compatibility with versions < 1.0.2 */
210
213
 
 
214
 
211
215
                        /* basic functions */
212
216
 
213
217
ZEXTERN const char * ZEXPORT zlibVersion OF((void));
214
218
/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
215
 
   If the first character differs, the library code actually used is
216
 
   not compatible with the zlib.h header file used by the application.
217
 
   This check is automatically made by deflateInit and inflateInit.
 
219
   If the first character differs, the library code actually used is not
 
220
   compatible with the zlib.h header file used by the application.  This check
 
221
   is automatically made by deflateInit and inflateInit.
218
222
 */
219
223
 
220
224
/*
221
225
ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
222
226
 
223
 
     Initializes the internal stream state for compression. The fields
224
 
   zalloc, zfree and opaque must be initialized before by the caller.
225
 
   If zalloc and zfree are set to Z_NULL, deflateInit updates them to
226
 
   use default allocation functions.
 
227
     Initializes the internal stream state for compression.  The fields
 
228
   zalloc, zfree and opaque must be initialized before by the caller.  If
 
229
   zalloc and zfree are set to Z_NULL, deflateInit updates them to use default
 
230
   allocation functions.
227
231
 
228
232
     The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
229
 
   1 gives best speed, 9 gives best compression, 0 gives no compression at
230
 
   all (the input data is simply copied a block at a time).
231
 
   Z_DEFAULT_COMPRESSION requests a default compromise between speed and
232
 
   compression (currently equivalent to level 6).
 
233
   1 gives best speed, 9 gives best compression, 0 gives no compression at all
 
234
   (the input data is simply copied a block at a time).  Z_DEFAULT_COMPRESSION
 
235
   requests a default compromise between speed and compression (currently
 
236
   equivalent to level 6).
233
237
 
234
 
     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
235
 
   enough memory, Z_STREAM_ERROR if level is not a valid compression level,
 
238
     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
 
239
   memory, Z_STREAM_ERROR if level is not a valid compression level, or
236
240
   Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
237
 
   with the version assumed by the caller (ZLIB_VERSION).
238
 
   msg is set to null if there is no error message.  deflateInit does not
239
 
   perform any compression: this will be done by deflate().
 
241
   with the version assumed by the caller (ZLIB_VERSION).  msg is set to null
 
242
   if there is no error message.  deflateInit does not perform any compression:
 
243
   this will be done by deflate().
240
244
*/
241
245
 
242
246
 
243
247
ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
244
248
/*
245
249
    deflate compresses as much data as possible, and stops when the input
246
 
  buffer becomes empty or the output buffer becomes full. It may introduce some
247
 
  output latency (reading input without producing any output) except when
 
250
  buffer becomes empty or the output buffer becomes full.  It may introduce
 
251
  some output latency (reading input without producing any output) except when
248
252
  forced to flush.
249
253
 
250
 
    The detailed semantics are as follows. deflate performs one or both of the
 
254
    The detailed semantics are as follows.  deflate performs one or both of the
251
255
  following actions:
252
256
 
253
257
  - Compress more input starting at next_in and update next_in and avail_in
254
 
    accordingly. If not all input can be processed (because there is not
 
258
    accordingly.  If not all input can be processed (because there is not
255
259
    enough room in the output buffer), next_in and avail_in are updated and
256
260
    processing will resume at this point for the next call of deflate().
257
261
 
258
262
  - Provide more output starting at next_out and update next_out and avail_out
259
 
    accordingly. This action is forced if the parameter flush is non zero.
 
263
    accordingly.  This action is forced if the parameter flush is non zero.
260
264
    Forcing flush frequently degrades the compression ratio, so this parameter
261
 
    should be set only when necessary (in interactive applications).
262
 
    Some output may be provided even if flush is not set.
 
265
    should be set only when necessary (in interactive applications).  Some
 
266
    output may be provided even if flush is not set.
263
267
 
264
 
  Before the call of deflate(), the application should ensure that at least
265
 
  one of the actions is possible, by providing more input and/or consuming
266
 
  more output, and updating avail_in or avail_out accordingly; avail_out
267
 
  should never be zero before the call. The application can consume the
268
 
  compressed output when it wants, for example when the output buffer is full
269
 
  (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
270
 
  and with zero avail_out, it must be called again after making room in the
271
 
  output buffer because there might be more output pending.
 
268
    Before the call of deflate(), the application should ensure that at least
 
269
  one of the actions is possible, by providing more input and/or consuming more
 
270
  output, and updating avail_in or avail_out accordingly; avail_out should
 
271
  never be zero before the call.  The application can consume the compressed
 
272
  output when it wants, for example when the output buffer is full (avail_out
 
273
  == 0), or after each call of deflate().  If deflate returns Z_OK and with
 
274
  zero avail_out, it must be called again after making room in the output
 
275
  buffer because there might be more output pending.
272
276
 
273
277
    Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
274
 
  decide how much data to accumualte before producing output, in order to
 
278
  decide how much data to accumulate before producing output, in order to
275
279
  maximize compression.
276
280
 
277
281
    If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
278
282
  flushed to the output buffer and the output is aligned on a byte boundary, so
279
 
  that the decompressor can get all input data available so far. (In particular
280
 
  avail_in is zero after the call if enough output space has been provided
281
 
  before the call.)  Flushing may degrade compression for some compression
282
 
  algorithms and so it should be used only when necessary.
 
283
  that the decompressor can get all input data available so far.  (In
 
284
  particular avail_in is zero after the call if enough output space has been
 
285
  provided before the call.) Flushing may degrade compression for some
 
286
  compression algorithms and so it should be used only when necessary.  This
 
287
  completes the current deflate block and follows it with an empty stored block
 
288
  that is three bits plus filler bits to the next byte, followed by four bytes
 
289
  (00 00 ff ff).
 
290
 
 
291
    If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the
 
292
  output buffer, but the output is not aligned to a byte boundary.  All of the
 
293
  input data so far will be available to the decompressor, as for Z_SYNC_FLUSH.
 
294
  This completes the current deflate block and follows it with an empty fixed
 
295
  codes block that is 10 bits long.  This assures that enough bytes are output
 
296
  in order for the decompressor to finish the block before the empty fixed code
 
297
  block.
 
298
 
 
299
    If flush is set to Z_BLOCK, a deflate block is completed and emitted, as
 
300
  for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to
 
301
  seven bits of the current block are held to be written as the next byte after
 
302
  the next deflate block is completed.  In this case, the decompressor may not
 
303
  be provided enough bits at this point in order to complete decompression of
 
304
  the data provided so far to the compressor.  It may need to wait for the next
 
305
  block to be emitted.  This is for advanced applications that need to control
 
306
  the emission of deflate blocks.
283
307
 
284
308
    If flush is set to Z_FULL_FLUSH, all output is flushed as with
285
309
  Z_SYNC_FLUSH, and the compression state is reset so that decompression can
286
310
  restart from this point if previous compressed data has been damaged or if
287
 
  random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
 
311
  random access is desired.  Using Z_FULL_FLUSH too often can seriously degrade
288
312
  compression.
289
313
 
290
314
    If deflate returns with avail_out == 0, this function must be called again
291
315
  with the same value of the flush parameter and more output space (updated
292
316
  avail_out), until the flush is complete (deflate returns with non-zero
293
 
  avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
 
317
  avail_out).  In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
294
318
  avail_out is greater than six to avoid repeated flush markers due to
295
319
  avail_out == 0 on return.
296
320
 
297
321
    If the parameter flush is set to Z_FINISH, pending input is processed,
298
 
  pending output is flushed and deflate returns with Z_STREAM_END if there
299
 
  was enough output space; if deflate returns with Z_OK, this function must be
 
322
  pending output is flushed and deflate returns with Z_STREAM_END if there was
 
323
  enough output space; if deflate returns with Z_OK, this function must be
300
324
  called again with Z_FINISH and more output space (updated avail_out) but no
301
 
  more input data, until it returns with Z_STREAM_END or an error. After
302
 
  deflate has returned Z_STREAM_END, the only possible operations on the
303
 
  stream are deflateReset or deflateEnd.
 
325
  more input data, until it returns with Z_STREAM_END or an error.  After
 
326
  deflate has returned Z_STREAM_END, the only possible operations on the stream
 
327
  are deflateReset or deflateEnd.
304
328
 
305
329
    Z_FINISH can be used immediately after deflateInit if all the compression
306
 
  is to be done in a single step. In this case, avail_out must be at least
307
 
  the value returned by deflateBound (see below). If deflate does not return
308
 
  Z_STREAM_END, then it must be called again as described above.
 
330
  is to be done in a single step.  In this case, avail_out must be at least the
 
331
  value returned by deflateBound (see below).  Then deflate is guaranteed to
 
332
  return Z_STREAM_END.  If not enough output space is provided, deflate will
 
333
  not return Z_STREAM_END, and it must be called again as described above.
309
334
 
310
335
    deflate() sets strm->adler to the adler32 checksum of all input read
311
336
  so far (that is, total_in bytes).
312
337
 
313
338
    deflate() may update strm->data_type if it can make a good guess about
314
 
  the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered
315
 
  binary. This field is only for information purposes and does not affect
316
 
  the compression algorithm in any manner.
 
339
  the input data type (Z_BINARY or Z_TEXT).  In doubt, the data is considered
 
340
  binary.  This field is only for information purposes and does not affect the
 
341
  compression algorithm in any manner.
317
342
 
318
343
    deflate() returns Z_OK if some progress has been made (more input
319
344
  processed or more output produced), Z_STREAM_END if all input has been
320
345
  consumed and all output has been produced (only when flush is set to
321
346
  Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
322
 
  if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
323
 
  (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not
 
347
  if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible
 
348
  (for example avail_in or avail_out was zero).  Note that Z_BUF_ERROR is not
324
349
  fatal, and deflate() can be called again with more input and more output
325
350
  space to continue compressing.
326
351
*/
329
354
ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
330
355
/*
331
356
     All dynamically allocated data structures for this stream are freed.
332
 
   This function discards any unprocessed input and does not flush any
333
 
   pending output.
 
357
   This function discards any unprocessed input and does not flush any pending
 
358
   output.
334
359
 
335
360
     deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
336
361
   stream state was inconsistent, Z_DATA_ERROR if the stream was freed
337
 
   prematurely (some input or output was discarded). In the error case,
338
 
   msg may be set but then points to a static string (which must not be
 
362
   prematurely (some input or output was discarded).  In the error case, msg
 
363
   may be set but then points to a static string (which must not be
339
364
   deallocated).
340
365
*/
341
366
 
343
368
/*
344
369
ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
345
370
 
346
 
     Initializes the internal stream state for decompression. The fields
 
371
     Initializes the internal stream state for decompression.  The fields
347
372
   next_in, avail_in, zalloc, zfree and opaque must be initialized before by
348
 
   the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
349
 
   value depends on the compression method), inflateInit determines the
 
373
   the caller.  If next_in is not Z_NULL and avail_in is large enough (the
 
374
   exact value depends on the compression method), inflateInit determines the
350
375
   compression method from the zlib header and allocates all data structures
351
376
   accordingly; otherwise the allocation will be deferred to the first call of
352
377
   inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to
354
379
 
355
380
     inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
356
381
   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
357
 
   version assumed by the caller.  msg is set to null if there is no error
358
 
   message. inflateInit does not perform any decompression apart from reading
359
 
   the zlib header if present: this will be done by inflate().  (So next_in and
360
 
   avail_in may be modified, but next_out and avail_out are unchanged.)
 
382
   version assumed by the caller, or Z_STREAM_ERROR if the parameters are
 
383
   invalid, such as a null pointer to the structure.  msg is set to null if
 
384
   there is no error message.  inflateInit does not perform any decompression
 
385
   apart from possibly reading the zlib header if present: actual decompression
 
386
   will be done by inflate().  (So next_in and avail_in may be modified, but
 
387
   next_out and avail_out are unused and unchanged.) The current implementation
 
388
   of inflateInit() does not process any header information -- that is deferred
 
389
   until inflate() is called.
361
390
*/
362
391
 
363
392
 
364
393
ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
365
394
/*
366
395
    inflate decompresses as much data as possible, and stops when the input
367
 
  buffer becomes empty or the output buffer becomes full. It may introduce
 
396
  buffer becomes empty or the output buffer becomes full.  It may introduce
368
397
  some output latency (reading input without producing any output) except when
369
398
  forced to flush.
370
399
 
371
 
  The detailed semantics are as follows. inflate performs one or both of the
 
400
  The detailed semantics are as follows.  inflate performs one or both of the
372
401
  following actions:
373
402
 
374
403
  - Decompress more input starting at next_in and update next_in and avail_in
375
 
    accordingly. If not all input can be processed (because there is not
376
 
    enough room in the output buffer), next_in is updated and processing
377
 
    will resume at this point for the next call of inflate().
 
404
    accordingly.  If not all input can be processed (because there is not
 
405
    enough room in the output buffer), next_in is updated and processing will
 
406
    resume at this point for the next call of inflate().
378
407
 
379
408
  - Provide more output starting at next_out and update next_out and avail_out
380
 
    accordingly.  inflate() provides as much output as possible, until there
381
 
    is no more input data or no more space in the output buffer (see below
382
 
    about the flush parameter).
383
 
 
384
 
  Before the call of inflate(), the application should ensure that at least
385
 
  one of the actions is possible, by providing more input and/or consuming
386
 
  more output, and updating the next_* and avail_* values accordingly.
387
 
  The application can consume the uncompressed output when it wants, for
388
 
  example when the output buffer is full (avail_out == 0), or after each
389
 
  call of inflate(). If inflate returns Z_OK and with zero avail_out, it
390
 
  must be called again after making room in the output buffer because there
391
 
  might be more output pending.
392
 
 
393
 
    The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
394
 
  Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much
395
 
  output as possible to the output buffer. Z_BLOCK requests that inflate() stop
396
 
  if and when it gets to the next deflate block boundary. When decoding the
397
 
  zlib or gzip format, this will cause inflate() to return immediately after
398
 
  the header and before the first block. When doing a raw inflate, inflate()
399
 
  will go ahead and process the first block, and will return when it gets to
400
 
  the end of that block, or when it runs out of data.
 
409
    accordingly.  inflate() provides as much output as possible, until there is
 
410
    no more input data or no more space in the output buffer (see below about
 
411
    the flush parameter).
 
412
 
 
413
    Before the call of inflate(), the application should ensure that at least
 
414
  one of the actions is possible, by providing more input and/or consuming more
 
415
  output, and updating the next_* and avail_* values accordingly.  The
 
416
  application can consume the uncompressed output when it wants, for example
 
417
  when the output buffer is full (avail_out == 0), or after each call of
 
418
  inflate().  If inflate returns Z_OK and with zero avail_out, it must be
 
419
  called again after making room in the output buffer because there might be
 
420
  more output pending.
 
421
 
 
422
    The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH,
 
423
  Z_BLOCK, or Z_TREES.  Z_SYNC_FLUSH requests that inflate() flush as much
 
424
  output as possible to the output buffer.  Z_BLOCK requests that inflate()
 
425
  stop if and when it gets to the next deflate block boundary.  When decoding
 
426
  the zlib or gzip format, this will cause inflate() to return immediately
 
427
  after the header and before the first block.  When doing a raw inflate,
 
428
  inflate() will go ahead and process the first block, and will return when it
 
429
  gets to the end of that block, or when it runs out of data.
401
430
 
402
431
    The Z_BLOCK option assists in appending to or combining deflate streams.
403
432
  Also to assist in this, on return inflate() will set strm->data_type to the
404
 
  number of unused bits in the last byte taken from strm->next_in, plus 64
405
 
  if inflate() is currently decoding the last block in the deflate stream,
406
 
  plus 128 if inflate() returned immediately after decoding an end-of-block
407
 
  code or decoding the complete header up to just before the first byte of the
408
 
  deflate stream. The end-of-block will not be indicated until all of the
409
 
  uncompressed data from that block has been written to strm->next_out.  The
410
 
  number of unused bits may in general be greater than seven, except when
411
 
  bit 7 of data_type is set, in which case the number of unused bits will be
412
 
  less than eight.
 
433
  number of unused bits in the last byte taken from strm->next_in, plus 64 if
 
434
  inflate() is currently decoding the last block in the deflate stream, plus
 
435
  128 if inflate() returned immediately after decoding an end-of-block code or
 
436
  decoding the complete header up to just before the first byte of the deflate
 
437
  stream.  The end-of-block will not be indicated until all of the uncompressed
 
438
  data from that block has been written to strm->next_out.  The number of
 
439
  unused bits may in general be greater than seven, except when bit 7 of
 
440
  data_type is set, in which case the number of unused bits will be less than
 
441
  eight.  data_type is set as noted here every time inflate() returns for all
 
442
  flush options, and so can be used to determine the amount of currently
 
443
  consumed input in bits.
 
444
 
 
445
    The Z_TREES option behaves as Z_BLOCK does, but it also returns when the
 
446
  end of each deflate block header is reached, before any actual data in that
 
447
  block is decoded.  This allows the caller to determine the length of the
 
448
  deflate block header for later use in random access within a deflate block.
 
449
  256 is added to the value of strm->data_type when inflate() returns
 
450
  immediately after reaching the end of the deflate block header.
413
451
 
414
452
    inflate() should normally be called until it returns Z_STREAM_END or an
415
 
  error. However if all decompression is to be performed in a single step
416
 
  (a single call of inflate), the parameter flush should be set to
417
 
  Z_FINISH. In this case all pending input is processed and all pending
418
 
  output is flushed; avail_out must be large enough to hold all the
419
 
  uncompressed data. (The size of the uncompressed data may have been saved
420
 
  by the compressor for this purpose.) The next operation on this stream must
421
 
  be inflateEnd to deallocate the decompression state. The use of Z_FINISH
422
 
  is never required, but can be used to inform inflate that a faster approach
423
 
  may be used for the single inflate() call.
 
453
  error.  However if all decompression is to be performed in a single step (a
 
454
  single call of inflate), the parameter flush should be set to Z_FINISH.  In
 
455
  this case all pending input is processed and all pending output is flushed;
 
456
  avail_out must be large enough to hold all of the uncompressed data for the
 
457
  operation to complete.  (The size of the uncompressed data may have been
 
458
  saved by the compressor for this purpose.) The use of Z_FINISH is not
 
459
  required to perform an inflation in one step.  However it may be used to
 
460
  inform inflate that a faster approach can be used for the single inflate()
 
461
  call.  Z_FINISH also informs inflate to not maintain a sliding window if the
 
462
  stream completes, which reduces inflate's memory footprint.  If the stream
 
463
  does not complete, either because not all of the stream is provided or not
 
464
  enough output space is provided, then a sliding window will be allocated and
 
465
  inflate() can be called again to continue the operation as if Z_NO_FLUSH had
 
466
  been used.
424
467
 
425
468
     In this implementation, inflate() always flushes as much output as
426
469
  possible to the output buffer, and always uses the faster approach on the
427
 
  first call. So the only effect of the flush parameter in this implementation
428
 
  is on the return value of inflate(), as noted below, or when it returns early
429
 
  because Z_BLOCK is used.
 
470
  first call.  So the effects of the flush parameter in this implementation are
 
471
  on the return value of inflate() as noted below, when inflate() returns early
 
472
  when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of
 
473
  memory for a sliding window when Z_FINISH is used.
430
474
 
431
475
     If a preset dictionary is needed after this call (see inflateSetDictionary
432
 
  below), inflate sets strm->adler to the adler32 checksum of the dictionary
 
476
  below), inflate sets strm->adler to the Adler-32 checksum of the dictionary
433
477
  chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
434
 
  strm->adler to the adler32 checksum of all output produced so far (that is,
 
478
  strm->adler to the Adler-32 checksum of all output produced so far (that is,
435
479
  total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
436
 
  below. At the end of the stream, inflate() checks that its computed adler32
 
480
  below.  At the end of the stream, inflate() checks that its computed adler32
437
481
  checksum is equal to that saved by the compressor and returns Z_STREAM_END
438
482
  only if the checksum is correct.
439
483
 
440
 
    inflate() will decompress and check either zlib-wrapped or gzip-wrapped
441
 
  deflate data.  The header type is detected automatically.  Any information
442
 
  contained in the gzip header is not retained, so applications that need that
443
 
  information should instead use raw inflate, see inflateInit2() below, or
444
 
  inflateBack() and perform their own processing of the gzip header and
445
 
  trailer.
 
484
    inflate() can decompress and check either zlib-wrapped or gzip-wrapped
 
485
  deflate data.  The header type is detected automatically, if requested when
 
486
  initializing with inflateInit2().  Any information contained in the gzip
 
487
  header is not retained, so applications that need that information should
 
488
  instead use raw inflate, see inflateInit2() below, or inflateBack() and
 
489
  perform their own processing of the gzip header and trailer.  When processing
 
490
  gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output
 
491
  producted so far.  The CRC-32 is checked against the gzip trailer.
446
492
 
447
493
    inflate() returns Z_OK if some progress has been made (more input processed
448
494
  or more output produced), Z_STREAM_END if the end of the compressed data has
450
496
  preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
451
497
  corrupted (input stream not conforming to the zlib format or incorrect check
452
498
  value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
453
 
  if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
 
499
  next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory,
454
500
  Z_BUF_ERROR if no progress is possible or if there was not enough room in the
455
 
  output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
 
501
  output buffer when Z_FINISH is used.  Note that Z_BUF_ERROR is not fatal, and
456
502
  inflate() can be called again with more input and more output space to
457
 
  continue decompressing. If Z_DATA_ERROR is returned, the application may then
458
 
  call inflateSync() to look for a good compression block if a partial recovery
459
 
  of the data is desired.
 
503
  continue decompressing.  If Z_DATA_ERROR is returned, the application may
 
504
  then call inflateSync() to look for a good compression block if a partial
 
505
  recovery of the data is desired.
460
506
*/
461
507
 
462
508
 
463
509
ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
464
510
/*
465
511
     All dynamically allocated data structures for this stream are freed.
466
 
   This function discards any unprocessed input and does not flush any
467
 
   pending output.
 
512
   This function discards any unprocessed input and does not flush any pending
 
513
   output.
468
514
 
469
515
     inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
470
 
   was inconsistent. In the error case, msg may be set but then points to a
 
516
   was inconsistent.  In the error case, msg may be set but then points to a
471
517
   static string (which must not be deallocated).
472
518
*/
473
519
 
 
520
 
474
521
                        /* Advanced functions */
475
522
 
476
523
/*
485
532
                                     int  memLevel,
486
533
                                     int  strategy));
487
534
 
488
 
     This is another version of deflateInit with more compression options. The
489
 
   fields next_in, zalloc, zfree and opaque must be initialized before by
490
 
   the caller.
 
535
     This is another version of deflateInit with more compression options.  The
 
536
   fields next_in, zalloc, zfree and opaque must be initialized before by the
 
537
   caller.
491
538
 
492
 
     The method parameter is the compression method. It must be Z_DEFLATED in
 
539
     The method parameter is the compression method.  It must be Z_DEFLATED in
493
540
   this version of the library.
494
541
 
495
542
     The windowBits parameter is the base two logarithm of the window size
496
 
   (the size of the history buffer). It should be in the range 8..15 for this
497
 
   version of the library. Larger values of this parameter result in better
498
 
   compression at the expense of memory usage. The default value is 15 if
 
543
   (the size of the history buffer).  It should be in the range 8..15 for this
 
544
   version of the library.  Larger values of this parameter result in better
 
545
   compression at the expense of memory usage.  The default value is 15 if
499
546
   deflateInit is used instead.
500
547
 
501
 
     windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
502
 
   determines the window size. deflate() will then generate raw deflate data
 
548
     windowBits can also be -8..-15 for raw deflate.  In this case, -windowBits
 
549
   determines the window size.  deflate() will then generate raw deflate data
503
550
   with no zlib header or trailer, and will not compute an adler32 check value.
504
551
 
505
 
     windowBits can also be greater than 15 for optional gzip encoding. Add
 
552
     windowBits can also be greater than 15 for optional gzip encoding.  Add
506
553
   16 to windowBits to write a simple gzip header and trailer around the
507
 
   compressed data instead of a zlib wrapper. The gzip header will have no
508
 
   file name, no extra data, no comment, no modification time (set to zero),
509
 
   no header crc, and the operating system will be set to 255 (unknown).  If a
 
554
   compressed data instead of a zlib wrapper.  The gzip header will have no
 
555
   file name, no extra data, no comment, no modification time (set to zero), no
 
556
   header crc, and the operating system will be set to 255 (unknown).  If a
510
557
   gzip stream is being written, strm->adler is a crc32 instead of an adler32.
511
558
 
512
559
     The memLevel parameter specifies how much memory should be allocated
513
 
   for the internal compression state. memLevel=1 uses minimum memory but
514
 
   is slow and reduces compression ratio; memLevel=9 uses maximum memory
515
 
   for optimal speed. The default value is 8. See zconf.h for total memory
516
 
   usage as a function of windowBits and memLevel.
 
560
   for the internal compression state.  memLevel=1 uses minimum memory but is
 
561
   slow and reduces compression ratio; memLevel=9 uses maximum memory for
 
562
   optimal speed.  The default value is 8.  See zconf.h for total memory usage
 
563
   as a function of windowBits and memLevel.
517
564
 
518
 
     The strategy parameter is used to tune the compression algorithm. Use the
 
565
     The strategy parameter is used to tune the compression algorithm.  Use the
519
566
   value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
520
567
   filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
521
568
   string match), or Z_RLE to limit match distances to one (run-length
522
 
   encoding). Filtered data consists mostly of small values with a somewhat
523
 
   random distribution. In this case, the compression algorithm is tuned to
524
 
   compress them better. The effect of Z_FILTERED is to force more Huffman
 
569
   encoding).  Filtered data consists mostly of small values with a somewhat
 
570
   random distribution.  In this case, the compression algorithm is tuned to
 
571
   compress them better.  The effect of Z_FILTERED is to force more Huffman
525
572
   coding and less string matching; it is somewhat intermediate between
526
 
   Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as
527
 
   Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy
528
 
   parameter only affects the compression ratio but not the correctness of the
529
 
   compressed output even if it is not set appropriately.  Z_FIXED prevents the
530
 
   use of dynamic Huffman codes, allowing for a simpler decoder for special
531
 
   applications.
 
573
   Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY.  Z_RLE is designed to be almost as
 
574
   fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data.  The
 
575
   strategy parameter only affects the compression ratio but not the
 
576
   correctness of the compressed output even if it is not set appropriately.
 
577
   Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler
 
578
   decoder for special applications.
532
579
 
533
 
      deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
534
 
   memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
535
 
   method). msg is set to null if there is no error message.  deflateInit2 does
536
 
   not perform any compression: this will be done by deflate().
 
580
     deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
 
581
   memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid
 
582
   method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is
 
583
   incompatible with the version assumed by the caller (ZLIB_VERSION).  msg is
 
584
   set to null if there is no error message.  deflateInit2 does not perform any
 
585
   compression: this will be done by deflate().
537
586
*/
538
587
 
539
588
ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
541
590
                                             uInt  dictLength));
542
591
/*
543
592
     Initializes the compression dictionary from the given byte sequence
544
 
   without producing any compressed output. This function must be called
545
 
   immediately after deflateInit, deflateInit2 or deflateReset, before any
546
 
   call of deflate. The compressor and decompressor must use exactly the same
547
 
   dictionary (see inflateSetDictionary).
 
593
   without producing any compressed output.  When using the zlib format, this
 
594
   function must be called immediately after deflateInit, deflateInit2 or
 
595
   deflateReset, and before any call of deflate.  When doing raw deflate, this
 
596
   function must be called either before any call of deflate, or immediately
 
597
   after the completion of a deflate block, i.e. after all input has been
 
598
   consumed and all output has been delivered when using any of the flush
 
599
   options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH.  The
 
600
   compressor and decompressor must use exactly the same dictionary (see
 
601
   inflateSetDictionary).
548
602
 
549
603
     The dictionary should consist of strings (byte sequences) that are likely
550
604
   to be encountered later in the data to be compressed, with the most commonly
551
 
   used strings preferably put towards the end of the dictionary. Using a
 
605
   used strings preferably put towards the end of the dictionary.  Using a
552
606
   dictionary is most useful when the data to be compressed is short and can be
553
607
   predicted with good accuracy; the data can then be compressed better than
554
608
   with the default empty dictionary.
555
609
 
556
610
     Depending on the size of the compression data structures selected by
557
611
   deflateInit or deflateInit2, a part of the dictionary may in effect be
558
 
   discarded, for example if the dictionary is larger than the window size in
559
 
   deflate or deflate2. Thus the strings most likely to be useful should be
560
 
   put at the end of the dictionary, not at the front. In addition, the
561
 
   current implementation of deflate will use at most the window size minus
562
 
   262 bytes of the provided dictionary.
 
612
   discarded, for example if the dictionary is larger than the window size
 
613
   provided in deflateInit or deflateInit2.  Thus the strings most likely to be
 
614
   useful should be put at the end of the dictionary, not at the front.  In
 
615
   addition, the current implementation of deflate will use at most the window
 
616
   size minus 262 bytes of the provided dictionary.
563
617
 
564
618
     Upon return of this function, strm->adler is set to the adler32 value
565
619
   of the dictionary; the decompressor may later use this value to determine
566
 
   which dictionary has been used by the compressor. (The adler32 value
 
620
   which dictionary has been used by the compressor.  (The adler32 value
567
621
   applies to the whole dictionary even if only a subset of the dictionary is
568
622
   actually used by the compressor.) If a raw deflate was requested, then the
569
623
   adler32 value is not computed and strm->adler is not set.
570
624
 
571
625
     deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
572
 
   parameter is invalid (such as NULL dictionary) or the stream state is
 
626
   parameter is invalid (e.g.  dictionary being Z_NULL) or the stream state is
573
627
   inconsistent (for example if deflate has already been called for this stream
574
 
   or if the compression method is bsort). deflateSetDictionary does not
575
 
   perform any compression: this will be done by deflate().
 
628
   or if not at a block boundary for raw deflate).  deflateSetDictionary does
 
629
   not perform any compression: this will be done by deflate().
576
630
*/
577
631
 
578
632
ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
582
636
 
583
637
     This function can be useful when several compression strategies will be
584
638
   tried, for example when there are several ways of pre-processing the input
585
 
   data with a filter. The streams that will be discarded should then be freed
 
639
   data with a filter.  The streams that will be discarded should then be freed
586
640
   by calling deflateEnd.  Note that deflateCopy duplicates the internal
587
 
   compression state which can be quite large, so this strategy is slow and
588
 
   can consume lots of memory.
 
641
   compression state which can be quite large, so this strategy is slow and can
 
642
   consume lots of memory.
589
643
 
590
644
     deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
591
645
   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
592
 
   (such as zalloc being NULL). msg is left unchanged in both source and
 
646
   (such as zalloc being Z_NULL).  msg is left unchanged in both source and
593
647
   destination.
594
648
*/
595
649
 
596
650
ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
597
651
/*
598
652
     This function is equivalent to deflateEnd followed by deflateInit,
599
 
   but does not free and reallocate all the internal compression state.
600
 
   The stream will keep the same compression level and any other attributes
601
 
   that may have been set by deflateInit2.
 
653
   but does not free and reallocate all the internal compression state.  The
 
654
   stream will keep the same compression level and any other attributes that
 
655
   may have been set by deflateInit2.
602
656
 
603
 
      deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
604
 
   stream state was inconsistent (such as zalloc or state being NULL).
 
657
     deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
 
658
   stream state was inconsistent (such as zalloc or state being Z_NULL).
605
659
*/
606
660
 
607
661
ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
611
665
     Dynamically update the compression level and compression strategy.  The
612
666
   interpretation of level and strategy is as in deflateInit2.  This can be
613
667
   used to switch between compression and straight copy of the input data, or
614
 
   to switch to a different kind of input data requiring a different
615
 
   strategy. If the compression level is changed, the input available so far
616
 
   is compressed with the old level (and may be flushed); the new level will
617
 
   take effect only at the next call of deflate().
 
668
   to switch to a different kind of input data requiring a different strategy.
 
669
   If the compression level is changed, the input available so far is
 
670
   compressed with the old level (and may be flushed); the new level will take
 
671
   effect only at the next call of deflate().
618
672
 
619
673
     Before the call of deflateParams, the stream state must be set as for
620
 
   a call of deflate(), since the currently available input may have to
621
 
   be compressed and flushed. In particular, strm->avail_out must be non-zero.
 
674
   a call of deflate(), since the currently available input may have to be
 
675
   compressed and flushed.  In particular, strm->avail_out must be non-zero.
622
676
 
623
677
     deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
624
 
   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
625
 
   if strm->avail_out was zero.
 
678
   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if
 
679
   strm->avail_out was zero.
626
680
*/
627
681
 
628
682
ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
646
700
                                       uLong sourceLen));
647
701
/*
648
702
     deflateBound() returns an upper bound on the compressed size after
649
 
   deflation of sourceLen bytes.  It must be called after deflateInit()
650
 
   or deflateInit2().  This would be used to allocate an output buffer
651
 
   for deflation in a single pass, and so would be called before deflate().
 
703
   deflation of sourceLen bytes.  It must be called after deflateInit() or
 
704
   deflateInit2(), and after deflateSetHeader(), if used.  This would be used
 
705
   to allocate an output buffer for deflation in a single pass, and so would be
 
706
   called before deflate().  If that first deflate() call is provided the
 
707
   sourceLen input bytes, an output buffer allocated to the size returned by
 
708
   deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed
 
709
   to return Z_STREAM_END.  Note that it is possible for the compressed size to
 
710
   be larger than the value returned by deflateBound() if flush options other
 
711
   than Z_FINISH or Z_NO_FLUSH are used.
652
712
*/
653
713
 
 
714
ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm,
 
715
                                       unsigned *pending,
 
716
                                       int *bits));
 
717
/*
 
718
     deflatePending() returns the number of bytes and bits of output that have
 
719
   been generated, but not yet provided in the available output.  The bytes not
 
720
   provided would be due to the available output space having being consumed.
 
721
   The number of bits of output not provided are between 0 and 7, where they
 
722
   await more bits to join them in order to fill out a full byte.  If pending
 
723
   or bits are Z_NULL, then those values are not set.
 
724
 
 
725
     deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source
 
726
   stream state was inconsistent.
 
727
 */
 
728
 
654
729
ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
655
730
                                     int bits,
656
731
                                     int value));
657
732
/*
658
733
     deflatePrime() inserts bits in the deflate output stream.  The intent
659
 
  is that this function is used to start off the deflate output with the
660
 
  bits leftover from a previous deflate stream when appending to it.  As such,
661
 
  this function can only be used for raw deflate, and must be used before the
662
 
  first deflate() call after a deflateInit2() or deflateReset().  bits must be
663
 
  less than or equal to 16, and that many of the least significant bits of
664
 
  value will be inserted in the output.
 
734
   is that this function is used to start off the deflate output with the bits
 
735
   leftover from a previous deflate stream when appending to it.  As such, this
 
736
   function can only be used for raw deflate, and must be used before the first
 
737
   deflate() call after a deflateInit2() or deflateReset().  bits must be less
 
738
   than or equal to 16, and that many of the least significant bits of value
 
739
   will be inserted in the output.
665
740
 
666
 
      deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
667
 
   stream state was inconsistent.
 
741
     deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough
 
742
   room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the
 
743
   source stream state was inconsistent.
668
744
*/
669
745
 
670
746
ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
671
747
                                         gz_headerp head));
672
748
/*
673
 
      deflateSetHeader() provides gzip header information for when a gzip
 
749
     deflateSetHeader() provides gzip header information for when a gzip
674
750
   stream is requested by deflateInit2().  deflateSetHeader() may be called
675
751
   after deflateInit2() or deflateReset() and before the first call of
676
752
   deflate().  The text, time, os, extra field, name, and comment information
683
759
   1.3.x) do not support header crc's, and will report that it is a "multi-part
684
760
   gzip file" and give up.
685
761
 
686
 
      If deflateSetHeader is not used, the default gzip header has text false,
 
762
     If deflateSetHeader is not used, the default gzip header has text false,
687
763
   the time set to zero, and os set to 255, with no extra, name, or comment
688
764
   fields.  The gzip header is returned to the default state by deflateReset().
689
765
 
690
 
      deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
 
766
     deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
691
767
   stream state was inconsistent.
692
768
*/
693
769
 
695
771
ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
696
772
                                     int  windowBits));
697
773
 
698
 
     This is another version of inflateInit with an extra parameter. The
 
774
     This is another version of inflateInit with an extra parameter.  The
699
775
   fields next_in, avail_in, zalloc, zfree and opaque must be initialized
700
776
   before by the caller.
701
777
 
702
778
     The windowBits parameter is the base two logarithm of the maximum window
703
779
   size (the size of the history buffer).  It should be in the range 8..15 for
704
 
   this version of the library. The default value is 15 if inflateInit is used
705
 
   instead. windowBits must be greater than or equal to the windowBits value
 
780
   this version of the library.  The default value is 15 if inflateInit is used
 
781
   instead.  windowBits must be greater than or equal to the windowBits value
706
782
   provided to deflateInit2() while compressing, or it must be equal to 15 if
707
 
   deflateInit2() was not used. If a compressed stream with a larger window
 
783
   deflateInit2() was not used.  If a compressed stream with a larger window
708
784
   size is given as input, inflate() will return with the error code
709
785
   Z_DATA_ERROR instead of trying to allocate a larger window.
710
786
 
711
 
     windowBits can also be -8..-15 for raw inflate. In this case, -windowBits
712
 
   determines the window size. inflate() will then process raw deflate data,
 
787
     windowBits can also be zero to request that inflate use the window size in
 
788
   the zlib header of the compressed stream.
 
789
 
 
790
     windowBits can also be -8..-15 for raw inflate.  In this case, -windowBits
 
791
   determines the window size.  inflate() will then process raw deflate data,
713
792
   not looking for a zlib or gzip header, not generating a check value, and not
714
 
   looking for any check values for comparison at the end of the stream. This
 
793
   looking for any check values for comparison at the end of the stream.  This
715
794
   is for use with other formats that use the deflate compressed data format
716
 
   such as zip.  Those formats provide their own check values. If a custom
 
795
   such as zip.  Those formats provide their own check values.  If a custom
717
796
   format is developed using the raw deflate format for compressed data, it is
718
797
   recommended that a check value such as an adler32 or a crc32 be applied to
719
798
   the uncompressed data as is done in the zlib, gzip, and zip formats.  For
720
 
   most applications, the zlib format should be used as is. Note that comments
 
799
   most applications, the zlib format should be used as is.  Note that comments
721
800
   above on the use in deflateInit2() applies to the magnitude of windowBits.
722
801
 
723
 
     windowBits can also be greater than 15 for optional gzip decoding. Add
 
802
     windowBits can also be greater than 15 for optional gzip decoding.  Add
724
803
   32 to windowBits to enable zlib and gzip decoding with automatic header
725
804
   detection, or add 16 to decode only the gzip format (the zlib format will
726
 
   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is
727
 
   a crc32 instead of an adler32.
 
805
   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is a
 
806
   crc32 instead of an adler32.
728
807
 
729
808
     inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
730
 
   memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg
731
 
   is set to null if there is no error message.  inflateInit2 does not perform
732
 
   any decompression apart from reading the zlib header if present: this will
733
 
   be done by inflate(). (So next_in and avail_in may be modified, but next_out
734
 
   and avail_out are unchanged.)
 
809
   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
 
810
   version assumed by the caller, or Z_STREAM_ERROR if the parameters are
 
811
   invalid, such as a null pointer to the structure.  msg is set to null if
 
812
   there is no error message.  inflateInit2 does not perform any decompression
 
813
   apart from possibly reading the zlib header if present: actual decompression
 
814
   will be done by inflate().  (So next_in and avail_in may be modified, but
 
815
   next_out and avail_out are unused and unchanged.) The current implementation
 
816
   of inflateInit2() does not process any header information -- that is
 
817
   deferred until inflate() is called.
735
818
*/
736
819
 
737
820
ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
739
822
                                             uInt  dictLength));
740
823
/*
741
824
     Initializes the decompression dictionary from the given uncompressed byte
742
 
   sequence. This function must be called immediately after a call of inflate,
743
 
   if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
 
825
   sequence.  This function must be called immediately after a call of inflate,
 
826
   if that call returned Z_NEED_DICT.  The dictionary chosen by the compressor
744
827
   can be determined from the adler32 value returned by that call of inflate.
745
828
   The compressor and decompressor must use exactly the same dictionary (see
746
 
   deflateSetDictionary).  For raw inflate, this function can be called
747
 
   immediately after inflateInit2() or inflateReset() and before any call of
748
 
   inflate() to set the dictionary.  The application must insure that the
749
 
   dictionary that was used for compression is provided.
 
829
   deflateSetDictionary).  For raw inflate, this function can be called at any
 
830
   time to set the dictionary.  If the provided dictionary is smaller than the
 
831
   window and there is already data in the window, then the provided dictionary
 
832
   will amend what's there.  The application must insure that the dictionary
 
833
   that was used for compression is provided.
750
834
 
751
835
     inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
752
 
   parameter is invalid (such as NULL dictionary) or the stream state is
 
836
   parameter is invalid (e.g.  dictionary being Z_NULL) or the stream state is
753
837
   inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
754
 
   expected one (incorrect adler32 value). inflateSetDictionary does not
 
838
   expected one (incorrect adler32 value).  inflateSetDictionary does not
755
839
   perform any decompression: this will be done by subsequent calls of
756
840
   inflate().
757
841
*/
758
842
 
 
843
ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm,
 
844
                                             Bytef *dictionary,
 
845
                                             uInt  *dictLength));
 
846
/*
 
847
     Returns the sliding dictionary being maintained by inflate.  dictLength is
 
848
   set to the number of bytes in the dictionary, and that many bytes are copied
 
849
   to dictionary.  dictionary must have enough space, where 32768 bytes is
 
850
   always enough.  If inflateGetDictionary() is called with dictionary equal to
 
851
   Z_NULL, then only the dictionary length is returned, and nothing is copied.
 
852
   Similary, if dictLength is Z_NULL, then it is not set.
 
853
 
 
854
     inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the
 
855
   stream state is inconsistent.
 
856
*/
 
857
 
759
858
ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
760
859
/*
761
 
    Skips invalid compressed data until a full flush point (see above the
762
 
  description of deflate with Z_FULL_FLUSH) can be found, or until all
763
 
  available input is skipped. No output is provided.
764
 
 
765
 
    inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
766
 
  if no more input was provided, Z_DATA_ERROR if no flush point has been found,
767
 
  or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
768
 
  case, the application may save the current current value of total_in which
769
 
  indicates where valid compressed data was found. In the error case, the
770
 
  application may repeatedly call inflateSync, providing more input each time,
771
 
  until success or end of the input data.
 
860
     Skips invalid compressed data until a possible full flush point (see above
 
861
   for the description of deflate with Z_FULL_FLUSH) can be found, or until all
 
862
   available input is skipped.  No output is provided.
 
863
 
 
864
     inflateSync searches for a 00 00 FF FF pattern in the compressed data.
 
865
   All full flush points have this pattern, but not all occurrences of this
 
866
   pattern are full flush points.
 
867
 
 
868
     inflateSync returns Z_OK if a possible full flush point has been found,
 
869
   Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point
 
870
   has been found, or Z_STREAM_ERROR if the stream structure was inconsistent.
 
871
   In the success case, the application may save the current current value of
 
872
   total_in which indicates where valid compressed data was found.  In the
 
873
   error case, the application may repeatedly call inflateSync, providing more
 
874
   input each time, until success or end of the input data.
772
875
*/
773
876
 
774
877
ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
783
886
 
784
887
     inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
785
888
   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
786
 
   (such as zalloc being NULL). msg is left unchanged in both source and
 
889
   (such as zalloc being Z_NULL).  msg is left unchanged in both source and
787
890
   destination.
788
891
*/
789
892
 
790
893
ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
791
894
/*
792
895
     This function is equivalent to inflateEnd followed by inflateInit,
793
 
   but does not free and reallocate all the internal decompression state.
794
 
   The stream will keep attributes that may have been set by inflateInit2.
795
 
 
796
 
      inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
797
 
   stream state was inconsistent (such as zalloc or state being NULL).
 
896
   but does not free and reallocate all the internal decompression state.  The
 
897
   stream will keep attributes that may have been set by inflateInit2.
 
898
 
 
899
     inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
 
900
   stream state was inconsistent (such as zalloc or state being Z_NULL).
 
901
*/
 
902
 
 
903
ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
 
904
                                      int windowBits));
 
905
/*
 
906
     This function is the same as inflateReset, but it also permits changing
 
907
   the wrap and window size requests.  The windowBits parameter is interpreted
 
908
   the same as it is for inflateInit2.
 
909
 
 
910
     inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source
 
911
   stream state was inconsistent (such as zalloc or state being Z_NULL), or if
 
912
   the windowBits parameter is invalid.
798
913
*/
799
914
 
800
915
ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
802
917
                                     int value));
803
918
/*
804
919
     This function inserts bits in the inflate input stream.  The intent is
805
 
  that this function is used to start inflating at a bit position in the
806
 
  middle of a byte.  The provided bits will be used before any bytes are used
807
 
  from next_in.  This function should only be used with raw inflate, and
808
 
  should be used before the first inflate() call after inflateInit2() or
809
 
  inflateReset().  bits must be less than or equal to 16, and that many of the
810
 
  least significant bits of value will be inserted in the input.
811
 
 
812
 
      inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
 
920
   that this function is used to start inflating at a bit position in the
 
921
   middle of a byte.  The provided bits will be used before any bytes are used
 
922
   from next_in.  This function should only be used with raw inflate, and
 
923
   should be used before the first inflate() call after inflateInit2() or
 
924
   inflateReset().  bits must be less than or equal to 16, and that many of the
 
925
   least significant bits of value will be inserted in the input.
 
926
 
 
927
     If bits is negative, then the input stream bit buffer is emptied.  Then
 
928
   inflatePrime() can be called again to put bits in the buffer.  This is used
 
929
   to clear out bits leftover after feeding inflate a block description prior
 
930
   to feeding inflate codes.
 
931
 
 
932
     inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
813
933
   stream state was inconsistent.
814
934
*/
815
935
 
 
936
ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm));
 
937
/*
 
938
     This function returns two values, one in the lower 16 bits of the return
 
939
   value, and the other in the remaining upper bits, obtained by shifting the
 
940
   return value down 16 bits.  If the upper value is -1 and the lower value is
 
941
   zero, then inflate() is currently decoding information outside of a block.
 
942
   If the upper value is -1 and the lower value is non-zero, then inflate is in
 
943
   the middle of a stored block, with the lower value equaling the number of
 
944
   bytes from the input remaining to copy.  If the upper value is not -1, then
 
945
   it is the number of bits back from the current bit position in the input of
 
946
   the code (literal or length/distance pair) currently being processed.  In
 
947
   that case the lower value is the number of bytes already emitted for that
 
948
   code.
 
949
 
 
950
     A code is being processed if inflate is waiting for more input to complete
 
951
   decoding of the code, or if it has completed decoding but is waiting for
 
952
   more output space to write the literal or match data.
 
953
 
 
954
     inflateMark() is used to mark locations in the input data for random
 
955
   access, which may be at bit positions, and to note those cases where the
 
956
   output of a code may span boundaries of random access blocks.  The current
 
957
   location in the input stream can be determined from avail_in and data_type
 
958
   as noted in the description for the Z_BLOCK flush parameter for inflate.
 
959
 
 
960
     inflateMark returns the value noted above or -1 << 16 if the provided
 
961
   source stream state was inconsistent.
 
962
*/
 
963
 
816
964
ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
817
965
                                         gz_headerp head));
818
966
/*
819
 
      inflateGetHeader() requests that gzip header information be stored in the
 
967
     inflateGetHeader() requests that gzip header information be stored in the
820
968
   provided gz_header structure.  inflateGetHeader() may be called after
821
969
   inflateInit2() or inflateReset(), and before the first call of inflate().
822
970
   As inflate() processes the gzip stream, head->done is zero until the header
823
971
   is completed, at which time head->done is set to one.  If a zlib stream is
824
972
   being decoded, then head->done is set to -1 to indicate that there will be
825
 
   no gzip header information forthcoming.  Note that Z_BLOCK can be used to
826
 
   force inflate() to return immediately after header processing is complete
827
 
   and before any actual data is decompressed.
 
973
   no gzip header information forthcoming.  Note that Z_BLOCK or Z_TREES can be
 
974
   used to force inflate() to return immediately after header processing is
 
975
   complete and before any actual data is decompressed.
828
976
 
829
 
      The text, time, xflags, and os fields are filled in with the gzip header
 
977
     The text, time, xflags, and os fields are filled in with the gzip header
830
978
   contents.  hcrc is set to true if there is a header CRC.  (The header CRC
831
 
   was valid if done is set to one.)  If extra is not Z_NULL, then extra_max
 
979
   was valid if done is set to one.) If extra is not Z_NULL, then extra_max
832
980
   contains the maximum number of bytes to write to extra.  Once done is true,
833
981
   extra_len contains the actual extra field length, and extra contains the
834
982
   extra field, or that field truncated if extra_max is less than extra_len.
835
983
   If name is not Z_NULL, then up to name_max characters are written there,
836
984
   terminated with a zero unless the length is greater than name_max.  If
837
985
   comment is not Z_NULL, then up to comm_max characters are written there,
838
 
   terminated with a zero unless the length is greater than comm_max.  When
839
 
   any of extra, name, or comment are not Z_NULL and the respective field is
840
 
   not present in the header, then that field is set to Z_NULL to signal its
 
986
   terminated with a zero unless the length is greater than comm_max.  When any
 
987
   of extra, name, or comment are not Z_NULL and the respective field is not
 
988
   present in the header, then that field is set to Z_NULL to signal its
841
989
   absence.  This allows the use of deflateSetHeader() with the returned
842
990
   structure to duplicate the header.  However if those fields are set to
843
991
   allocated memory, then the application will need to save those pointers
844
992
   elsewhere so that they can be eventually freed.
845
993
 
846
 
      If inflateGetHeader is not used, then the header information is simply
 
994
     If inflateGetHeader is not used, then the header information is simply
847
995
   discarded.  The header is always checked for validity, including the header
848
996
   CRC if present.  inflateReset() will reset the process to discard the header
849
997
   information.  The application would need to call inflateGetHeader() again to
850
998
   retrieve the header from the next gzip stream.
851
999
 
852
 
      inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
 
1000
     inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
853
1001
   stream state was inconsistent.
854
1002
*/
855
1003
 
870
1018
     See inflateBack() for the usage of these routines.
871
1019
 
872
1020
     inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
873
 
   the paramaters are invalid, Z_MEM_ERROR if the internal state could not
874
 
   be allocated, or Z_VERSION_ERROR if the version of the library does not
875
 
   match the version of the header file.
 
1021
   the parameters are invalid, Z_MEM_ERROR if the internal state could not be
 
1022
   allocated, or Z_VERSION_ERROR if the version of the library does not match
 
1023
   the version of the header file.
876
1024
*/
877
1025
 
878
 
typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
 
1026
typedef unsigned (*in_func) OF((void FAR *,
 
1027
                                z_const unsigned char FAR * FAR *));
879
1028
typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
880
1029
 
881
1030
ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
883
1032
                                    out_func out, void FAR *out_desc));
884
1033
/*
885
1034
     inflateBack() does a raw inflate with a single call using a call-back
886
 
   interface for input and output.  This is more efficient than inflate() for
887
 
   file i/o applications in that it avoids copying between the output and the
888
 
   sliding window by simply making the window itself the output buffer.  This
889
 
   function trusts the application to not change the output buffer passed by
890
 
   the output function, at least until inflateBack() returns.
 
1035
   interface for input and output.  This is potentially more efficient than
 
1036
   inflate() for file i/o applications, in that it avoids copying between the
 
1037
   output and the sliding window by simply making the window itself the output
 
1038
   buffer.  inflate() can be faster on modern CPUs when used with large
 
1039
   buffers.  inflateBack() trusts the application to not change the output
 
1040
   buffer passed by the output function, at least until inflateBack() returns.
891
1041
 
892
1042
     inflateBackInit() must be called first to allocate the internal state
893
1043
   and to initialize the state with the user-provided window buffer.
894
1044
   inflateBack() may then be used multiple times to inflate a complete, raw
895
 
   deflate stream with each call.  inflateBackEnd() is then called to free
896
 
   the allocated state.
 
1045
   deflate stream with each call.  inflateBackEnd() is then called to free the
 
1046
   allocated state.
897
1047
 
898
1048
     A raw deflate stream is one with no zlib or gzip header or trailer.
899
1049
   This routine would normally be used in a utility that reads zip or gzip
900
1050
   files and writes out uncompressed files.  The utility would decode the
901
 
   header and process the trailer on its own, hence this routine expects
902
 
   only the raw deflate stream to decompress.  This is different from the
903
 
   normal behavior of inflate(), which expects either a zlib or gzip header and
 
1051
   header and process the trailer on its own, hence this routine expects only
 
1052
   the raw deflate stream to decompress.  This is different from the normal
 
1053
   behavior of inflate(), which expects either a zlib or gzip header and
904
1054
   trailer around the deflate stream.
905
1055
 
906
1056
     inflateBack() uses two subroutines supplied by the caller that are then
926
1076
   calling inflateBack().  If strm->next_in is Z_NULL, then in() will be called
927
1077
   immediately for input.  If strm->next_in is not Z_NULL, then strm->avail_in
928
1078
   must also be initialized, and then if strm->avail_in is not zero, input will
929
 
   initially be taken from strm->next_in[0 .. strm->avail_in - 1].
 
1079
   initially be taken from strm->next_in[0 ..  strm->avail_in - 1].
930
1080
 
931
1081
     The in_desc and out_desc parameters of inflateBack() is passed as the
932
1082
   first parameter of in() and out() respectively when they are called.  These
936
1086
     On return, inflateBack() will set strm->next_in and strm->avail_in to
937
1087
   pass back any unused input that was provided by the last in() call.  The
938
1088
   return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR
939
 
   if in() or out() returned an error, Z_DATA_ERROR if there was a format
940
 
   error in the deflate stream (in which case strm->msg is set to indicate the
941
 
   nature of the error), or Z_STREAM_ERROR if the stream was not properly
942
 
   initialized.  In the case of Z_BUF_ERROR, an input or output error can be
943
 
   distinguished using strm->next_in which will be Z_NULL only if in() returned
944
 
   an error.  If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to
945
 
   out() returning non-zero.  (in() will always be called before out(), so
946
 
   strm->next_in is assured to be defined if out() returns non-zero.)  Note
947
 
   that inflateBack() cannot return Z_OK.
 
1089
   if in() or out() returned an error, Z_DATA_ERROR if there was a format error
 
1090
   in the deflate stream (in which case strm->msg is set to indicate the nature
 
1091
   of the error), or Z_STREAM_ERROR if the stream was not properly initialized.
 
1092
   In the case of Z_BUF_ERROR, an input or output error can be distinguished
 
1093
   using strm->next_in which will be Z_NULL only if in() returned an error.  If
 
1094
   strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning
 
1095
   non-zero.  (in() will always be called before out(), so strm->next_in is
 
1096
   assured to be defined if out() returns non-zero.) Note that inflateBack()
 
1097
   cannot return Z_OK.
948
1098
*/
949
1099
 
950
1100
ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
996
1146
     27-31: 0 (reserved)
997
1147
 */
998
1148
 
 
1149
#ifndef Z_SOLO
999
1150
 
1000
1151
                        /* utility functions */
1001
1152
 
1002
1153
/*
1003
 
     The following utility functions are implemented on top of the
1004
 
   basic stream-oriented functions. To simplify the interface, some
1005
 
   default options are assumed (compression level and memory usage,
1006
 
   standard memory allocation functions). The source code of these
1007
 
   utility functions can easily be modified if you need special options.
 
1154
     The following utility functions are implemented on top of the basic
 
1155
   stream-oriented functions.  To simplify the interface, some default options
 
1156
   are assumed (compression level and memory usage, standard memory allocation
 
1157
   functions).  The source code of these utility functions can be modified if
 
1158
   you need special options.
1008
1159
*/
1009
1160
 
1010
1161
ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
1011
1162
                                 const Bytef *source, uLong sourceLen));
1012
1163
/*
1013
1164
     Compresses the source buffer into the destination buffer.  sourceLen is
1014
 
   the byte length of the source buffer. Upon entry, destLen is the total
1015
 
   size of the destination buffer, which must be at least the value returned
1016
 
   by compressBound(sourceLen). Upon exit, destLen is the actual size of the
 
1165
   the byte length of the source buffer.  Upon entry, destLen is the total size
 
1166
   of the destination buffer, which must be at least the value returned by
 
1167
   compressBound(sourceLen).  Upon exit, destLen is the actual size of the
1017
1168
   compressed buffer.
1018
 
     This function can be used to compress a whole file at once if the
1019
 
   input file is mmap'ed.
 
1169
 
1020
1170
     compress returns Z_OK if success, Z_MEM_ERROR if there was not
1021
1171
   enough memory, Z_BUF_ERROR if there was not enough room in the output
1022
1172
   buffer.
1026
1176
                                  const Bytef *source, uLong sourceLen,
1027
1177
                                  int level));
1028
1178
/*
1029
 
     Compresses the source buffer into the destination buffer. The level
 
1179
     Compresses the source buffer into the destination buffer.  The level
1030
1180
   parameter has the same meaning as in deflateInit.  sourceLen is the byte
1031
 
   length of the source buffer. Upon entry, destLen is the total size of the
 
1181
   length of the source buffer.  Upon entry, destLen is the total size of the
1032
1182
   destination buffer, which must be at least the value returned by
1033
 
   compressBound(sourceLen). Upon exit, destLen is the actual size of the
 
1183
   compressBound(sourceLen).  Upon exit, destLen is the actual size of the
1034
1184
   compressed buffer.
1035
1185
 
1036
1186
     compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
1041
1191
ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
1042
1192
/*
1043
1193
     compressBound() returns an upper bound on the compressed size after
1044
 
   compress() or compress2() on sourceLen bytes.  It would be used before
1045
 
   a compress() or compress2() call to allocate the destination buffer.
 
1194
   compress() or compress2() on sourceLen bytes.  It would be used before a
 
1195
   compress() or compress2() call to allocate the destination buffer.
1046
1196
*/
1047
1197
 
1048
1198
ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
1049
1199
                                   const Bytef *source, uLong sourceLen));
1050
1200
/*
1051
1201
     Decompresses the source buffer into the destination buffer.  sourceLen is
1052
 
   the byte length of the source buffer. Upon entry, destLen is the total
1053
 
   size of the destination buffer, which must be large enough to hold the
1054
 
   entire uncompressed data. (The size of the uncompressed data must have
1055
 
   been saved previously by the compressor and transmitted to the decompressor
1056
 
   by some mechanism outside the scope of this compression library.)
1057
 
   Upon exit, destLen is the actual size of the compressed buffer.
1058
 
     This function can be used to decompress a whole file at once if the
1059
 
   input file is mmap'ed.
 
1202
   the byte length of the source buffer.  Upon entry, destLen is the total size
 
1203
   of the destination buffer, which must be large enough to hold the entire
 
1204
   uncompressed data.  (The size of the uncompressed data must have been saved
 
1205
   previously by the compressor and transmitted to the decompressor by some
 
1206
   mechanism outside the scope of this compression library.) Upon exit, destLen
 
1207
   is the actual size of the uncompressed buffer.
1060
1208
 
1061
1209
     uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
1062
1210
   enough memory, Z_BUF_ERROR if there was not enough room in the output
1063
 
   buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete.
1064
 
*/
1065
 
 
1066
 
 
1067
 
typedef voidp gzFile;
1068
 
 
1069
 
ZEXTERN gzFile ZEXPORT gzopen  OF((const char *path, const char *mode));
1070
 
/*
1071
 
     Opens a gzip (.gz) file for reading or writing. The mode parameter
1072
 
   is as in fopen ("rb" or "wb") but can also include a compression level
1073
 
   ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
1074
 
   Huffman only compression as in "wb1h", or 'R' for run-length encoding
1075
 
   as in "wb1R". (See the description of deflateInit2 for more information
1076
 
   about the strategy parameter.)
 
1211
   buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete.  In
 
1212
   the case where there is not enough room, uncompress() will fill the output
 
1213
   buffer with the uncompressed data up to that point.
 
1214
*/
 
1215
 
 
1216
                        /* gzip file access functions */
 
1217
 
 
1218
/*
 
1219
     This library supports reading and writing files in gzip (.gz) format with
 
1220
   an interface similar to that of stdio, using the functions that start with
 
1221
   "gz".  The gzip format is different from the zlib format.  gzip is a gzip
 
1222
   wrapper, documented in RFC 1952, wrapped around a deflate stream.
 
1223
*/
 
1224
 
 
1225
typedef struct gzFile_s *gzFile;    /* semi-opaque gzip file descriptor */
 
1226
 
 
1227
/*
 
1228
ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
 
1229
 
 
1230
     Opens a gzip (.gz) file for reading or writing.  The mode parameter is as
 
1231
   in fopen ("rb" or "wb") but can also include a compression level ("wb9") or
 
1232
   a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
 
1233
   compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
 
1234
   for fixed code compression as in "wb9F".  (See the description of
 
1235
   deflateInit2 for more information about the strategy parameter.)  'T' will
 
1236
   request transparent writing or appending with no compression and not using
 
1237
   the gzip format.
 
1238
 
 
1239
     "a" can be used instead of "w" to request that the gzip stream that will
 
1240
   be written be appended to the file.  "+" will result in an error, since
 
1241
   reading and writing to the same gzip file is not supported.  The addition of
 
1242
   "x" when writing will create the file exclusively, which fails if the file
 
1243
   already exists.  On systems that support it, the addition of "e" when
 
1244
   reading or writing will set the flag to close the file on an execve() call.
 
1245
 
 
1246
     These functions, as well as gzip, will read and decode a sequence of gzip
 
1247
   streams in a file.  The append function of gzopen() can be used to create
 
1248
   such a file.  (Also see gzflush() for another way to do this.)  When
 
1249
   appending, gzopen does not test whether the file begins with a gzip stream,
 
1250
   nor does it look for the end of the gzip streams to begin appending.  gzopen
 
1251
   will simply append a gzip stream to the existing file.
1077
1252
 
1078
1253
     gzopen can be used to read a file which is not in gzip format; in this
1079
 
   case gzread will directly read from the file without decompression.
1080
 
 
1081
 
     gzopen returns NULL if the file could not be opened or if there was
1082
 
   insufficient memory to allocate the (de)compression state; errno
1083
 
   can be checked to distinguish the two cases (if errno is zero, the
1084
 
   zlib error is Z_MEM_ERROR).  */
1085
 
 
1086
 
ZEXTERN gzFile ZEXPORT gzdopen  OF((int fd, const char *mode));
1087
 
/*
1088
 
     gzdopen() associates a gzFile with the file descriptor fd.  File
1089
 
   descriptors are obtained from calls like open, dup, creat, pipe or
1090
 
   fileno (in the file has been previously opened with fopen).
1091
 
   The mode parameter is as in gzopen.
1092
 
     The next call of gzclose on the returned gzFile will also close the
1093
 
   file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
1094
 
   descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
1095
 
     gzdopen returns NULL if there was insufficient memory to allocate
1096
 
   the (de)compression state.
 
1254
   case gzread will directly read from the file without decompression.  When
 
1255
   reading, this will be detected automatically by looking for the magic two-
 
1256
   byte gzip header.
 
1257
 
 
1258
     gzopen returns NULL if the file could not be opened, if there was
 
1259
   insufficient memory to allocate the gzFile state, or if an invalid mode was
 
1260
   specified (an 'r', 'w', or 'a' was not provided, or '+' was provided).
 
1261
   errno can be checked to determine if the reason gzopen failed was that the
 
1262
   file could not be opened.
 
1263
*/
 
1264
 
 
1265
ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
 
1266
/*
 
1267
     gzdopen associates a gzFile with the file descriptor fd.  File descriptors
 
1268
   are obtained from calls like open, dup, creat, pipe or fileno (if the file
 
1269
   has been previously opened with fopen).  The mode parameter is as in gzopen.
 
1270
 
 
1271
     The next call of gzclose on the returned gzFile will also close the file
 
1272
   descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor
 
1273
   fd.  If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd,
 
1274
   mode);.  The duplicated descriptor should be saved to avoid a leak, since
 
1275
   gzdopen does not close fd if it fails.  If you are using fileno() to get the
 
1276
   file descriptor from a FILE *, then you will have to use dup() to avoid
 
1277
   double-close()ing the file descriptor.  Both gzclose() and fclose() will
 
1278
   close the associated file descriptor, so they need to have different file
 
1279
   descriptors.
 
1280
 
 
1281
     gzdopen returns NULL if there was insufficient memory to allocate the
 
1282
   gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not
 
1283
   provided, or '+' was provided), or if fd is -1.  The file descriptor is not
 
1284
   used until the next gz* read, write, seek, or close operation, so gzdopen
 
1285
   will not detect if fd is invalid (unless fd is -1).
 
1286
*/
 
1287
 
 
1288
ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
 
1289
/*
 
1290
     Set the internal buffer size used by this library's functions.  The
 
1291
   default buffer size is 8192 bytes.  This function must be called after
 
1292
   gzopen() or gzdopen(), and before any other calls that read or write the
 
1293
   file.  The buffer memory allocation is always deferred to the first read or
 
1294
   write.  Two buffers are allocated, either both of the specified size when
 
1295
   writing, or one of the specified size and the other twice that size when
 
1296
   reading.  A larger buffer size of, for example, 64K or 128K bytes will
 
1297
   noticeably increase the speed of decompression (reading).
 
1298
 
 
1299
     The new buffer size also affects the maximum length for gzprintf().
 
1300
 
 
1301
     gzbuffer() returns 0 on success, or -1 on failure, such as being called
 
1302
   too late.
1097
1303
*/
1098
1304
 
1099
1305
ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
1100
1306
/*
1101
 
     Dynamically update the compression level or strategy. See the description
 
1307
     Dynamically update the compression level or strategy.  See the description
1102
1308
   of deflateInit2 for the meaning of these parameters.
 
1309
 
1103
1310
     gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
1104
1311
   opened for writing.
1105
1312
*/
1106
1313
 
1107
 
ZEXTERN int ZEXPORT    gzread  OF((gzFile file, voidp buf, unsigned len));
 
1314
ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
1108
1315
/*
1109
 
     Reads the given number of uncompressed bytes from the compressed file.
1110
 
   If the input file was not in gzip format, gzread copies the given number
1111
 
   of bytes into the buffer.
1112
 
     gzread returns the number of uncompressed bytes actually read (0 for
1113
 
   end of file, -1 for error). */
1114
 
 
1115
 
ZEXTERN int ZEXPORT    gzwrite OF((gzFile file,
1116
 
                                   voidpc buf, unsigned len));
 
1316
     Reads the given number of uncompressed bytes from the compressed file.  If
 
1317
   the input file is not in gzip format, gzread copies the given number of
 
1318
   bytes into the buffer directly from the file.
 
1319
 
 
1320
     After reaching the end of a gzip stream in the input, gzread will continue
 
1321
   to read, looking for another gzip stream.  Any number of gzip streams may be
 
1322
   concatenated in the input file, and will all be decompressed by gzread().
 
1323
   If something other than a gzip stream is encountered after a gzip stream,
 
1324
   that remaining trailing garbage is ignored (and no error is returned).
 
1325
 
 
1326
     gzread can be used to read a gzip file that is being concurrently written.
 
1327
   Upon reaching the end of the input, gzread will return with the available
 
1328
   data.  If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then
 
1329
   gzclearerr can be used to clear the end of file indicator in order to permit
 
1330
   gzread to be tried again.  Z_OK indicates that a gzip stream was completed
 
1331
   on the last gzread.  Z_BUF_ERROR indicates that the input file ended in the
 
1332
   middle of a gzip stream.  Note that gzread does not return -1 in the event
 
1333
   of an incomplete gzip stream.  This error is deferred until gzclose(), which
 
1334
   will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip
 
1335
   stream.  Alternatively, gzerror can be used before gzclose to detect this
 
1336
   case.
 
1337
 
 
1338
     gzread returns the number of uncompressed bytes actually read, less than
 
1339
   len for end of file, or -1 for error.
 
1340
*/
 
1341
 
 
1342
ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
 
1343
                                voidpc buf, unsigned len));
1117
1344
/*
1118
1345
     Writes the given number of uncompressed bytes into the compressed file.
1119
 
   gzwrite returns the number of uncompressed bytes actually written
1120
 
   (0 in case of error).
 
1346
   gzwrite returns the number of uncompressed bytes written or 0 in case of
 
1347
   error.
1121
1348
*/
1122
1349
 
1123
 
ZEXTERN int ZEXPORTVA   gzprintf OF((gzFile file, const char *format, ...));
 
1350
ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
1124
1351
/*
1125
 
     Converts, formats, and writes the args to the compressed file under
1126
 
   control of the format string, as in fprintf. gzprintf returns the number of
1127
 
   uncompressed bytes actually written (0 in case of error).  The number of
1128
 
   uncompressed bytes written is limited to 4095. The caller should assure that
1129
 
   this limit is not exceeded. If it is exceeded, then gzprintf() will return
1130
 
   return an error (0) with nothing written. In this case, there may also be a
1131
 
   buffer overflow with unpredictable consequences, which is possible only if
1132
 
   zlib was compiled with the insecure functions sprintf() or vsprintf()
1133
 
   because the secure snprintf() or vsnprintf() functions were not available.
 
1352
     Converts, formats, and writes the arguments to the compressed file under
 
1353
   control of the format string, as in fprintf.  gzprintf returns the number of
 
1354
   uncompressed bytes actually written, or 0 in case of error.  The number of
 
1355
   uncompressed bytes written is limited to 8191, or one less than the buffer
 
1356
   size given to gzbuffer().  The caller should assure that this limit is not
 
1357
   exceeded.  If it is exceeded, then gzprintf() will return an error (0) with
 
1358
   nothing written.  In this case, there may also be a buffer overflow with
 
1359
   unpredictable consequences, which is possible only if zlib was compiled with
 
1360
   the insecure functions sprintf() or vsprintf() because the secure snprintf()
 
1361
   or vsnprintf() functions were not available.  This can be determined using
 
1362
   zlibCompileFlags().
1134
1363
*/
1135
1364
 
1136
1365
ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
1137
1366
/*
1138
 
      Writes the given null-terminated string to the compressed file, excluding
 
1367
     Writes the given null-terminated string to the compressed file, excluding
1139
1368
   the terminating null character.
1140
 
      gzputs returns the number of characters written, or -1 in case of error.
 
1369
 
 
1370
     gzputs returns the number of characters written, or -1 in case of error.
1141
1371
*/
1142
1372
 
1143
1373
ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
1144
1374
/*
1145
 
      Reads bytes from the compressed file until len-1 characters are read, or
1146
 
   a newline character is read and transferred to buf, or an end-of-file
1147
 
   condition is encountered.  The string is then terminated with a null
1148
 
   character.
1149
 
      gzgets returns buf, or Z_NULL in case of error.
1150
 
*/
1151
 
 
1152
 
ZEXTERN int ZEXPORT    gzputc OF((gzFile file, int c));
1153
 
/*
1154
 
      Writes c, converted to an unsigned char, into the compressed file.
1155
 
   gzputc returns the value that was written, or -1 in case of error.
1156
 
*/
1157
 
 
1158
 
ZEXTERN int ZEXPORT    gzgetc OF((gzFile file));
1159
 
/*
1160
 
      Reads one byte from the compressed file. gzgetc returns this byte
1161
 
   or -1 in case of end of file or error.
1162
 
*/
1163
 
 
1164
 
ZEXTERN int ZEXPORT    gzungetc OF((int c, gzFile file));
1165
 
/*
1166
 
      Push one character back onto the stream to be read again later.
1167
 
   Only one character of push-back is allowed.  gzungetc() returns the
1168
 
   character pushed, or -1 on failure.  gzungetc() will fail if a
1169
 
   character has been pushed but not read yet, or if c is -1. The pushed
1170
 
   character will be discarded if the stream is repositioned with gzseek()
1171
 
   or gzrewind().
1172
 
*/
1173
 
 
1174
 
ZEXTERN int ZEXPORT    gzflush OF((gzFile file, int flush));
1175
 
/*
1176
 
     Flushes all pending output into the compressed file. The parameter
1177
 
   flush is as in the deflate() function. The return value is the zlib
1178
 
   error number (see function gzerror below). gzflush returns Z_OK if
1179
 
   the flush parameter is Z_FINISH and all output could be flushed.
1180
 
     gzflush should be called only when strictly necessary because it can
1181
 
   degrade compression.
1182
 
*/
1183
 
 
1184
 
ZEXTERN z_off_t ZEXPORT    gzseek OF((gzFile file,
1185
 
                                      z_off_t offset, int whence));
1186
 
/*
1187
 
      Sets the starting position for the next gzread or gzwrite on the
1188
 
   given compressed file. The offset represents a number of bytes in the
1189
 
   uncompressed data stream. The whence parameter is defined as in lseek(2);
 
1375
     Reads bytes from the compressed file until len-1 characters are read, or a
 
1376
   newline character is read and transferred to buf, or an end-of-file
 
1377
   condition is encountered.  If any characters are read or if len == 1, the
 
1378
   string is terminated with a null character.  If no characters are read due
 
1379
   to an end-of-file or len < 1, then the buffer is left untouched.
 
1380
 
 
1381
     gzgets returns buf which is a null-terminated string, or it returns NULL
 
1382
   for end-of-file or in case of error.  If there was an error, the contents at
 
1383
   buf are indeterminate.
 
1384
*/
 
1385
 
 
1386
ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
 
1387
/*
 
1388
     Writes c, converted to an unsigned char, into the compressed file.  gzputc
 
1389
   returns the value that was written, or -1 in case of error.
 
1390
*/
 
1391
 
 
1392
ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
 
1393
/*
 
1394
     Reads one byte from the compressed file.  gzgetc returns this byte or -1
 
1395
   in case of end of file or error.  This is implemented as a macro for speed.
 
1396
   As such, it does not do all of the checking the other functions do.  I.e.
 
1397
   it does not check to see if file is NULL, nor whether the structure file
 
1398
   points to has been clobbered or not.
 
1399
*/
 
1400
 
 
1401
ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
 
1402
/*
 
1403
     Push one character back onto the stream to be read as the first character
 
1404
   on the next read.  At least one character of push-back is allowed.
 
1405
   gzungetc() returns the character pushed, or -1 on failure.  gzungetc() will
 
1406
   fail if c is -1, and may fail if a character has been pushed but not read
 
1407
   yet.  If gzungetc is used immediately after gzopen or gzdopen, at least the
 
1408
   output buffer size of pushed characters is allowed.  (See gzbuffer above.)
 
1409
   The pushed character will be discarded if the stream is repositioned with
 
1410
   gzseek() or gzrewind().
 
1411
*/
 
1412
 
 
1413
ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
 
1414
/*
 
1415
     Flushes all pending output into the compressed file.  The parameter flush
 
1416
   is as in the deflate() function.  The return value is the zlib error number
 
1417
   (see function gzerror below).  gzflush is only permitted when writing.
 
1418
 
 
1419
     If the flush parameter is Z_FINISH, the remaining data is written and the
 
1420
   gzip stream is completed in the output.  If gzwrite() is called again, a new
 
1421
   gzip stream will be started in the output.  gzread() is able to read such
 
1422
   concatented gzip streams.
 
1423
 
 
1424
     gzflush should be called only when strictly necessary because it will
 
1425
   degrade compression if called too often.
 
1426
*/
 
1427
 
 
1428
/*
 
1429
ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
 
1430
                                   z_off_t offset, int whence));
 
1431
 
 
1432
     Sets the starting position for the next gzread or gzwrite on the given
 
1433
   compressed file.  The offset represents a number of bytes in the
 
1434
   uncompressed data stream.  The whence parameter is defined as in lseek(2);
1190
1435
   the value SEEK_END is not supported.
 
1436
 
1191
1437
     If the file is opened for reading, this function is emulated but can be
1192
 
   extremely slow. If the file is opened for writing, only forward seeks are
 
1438
   extremely slow.  If the file is opened for writing, only forward seeks are
1193
1439
   supported; gzseek then compresses a sequence of zeroes up to the new
1194
1440
   starting position.
1195
1441
 
1196
 
      gzseek returns the resulting offset location as measured in bytes from
 
1442
     gzseek returns the resulting offset location as measured in bytes from
1197
1443
   the beginning of the uncompressed stream, or -1 in case of error, in
1198
1444
   particular if the file is opened for writing and the new starting position
1199
1445
   would be before the current position.
1203
1449
/*
1204
1450
     Rewinds the given file. This function is supported only for reading.
1205
1451
 
1206
 
   gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
 
1452
     gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
1207
1453
*/
1208
1454
 
 
1455
/*
1209
1456
ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));
 
1457
 
 
1458
     Returns the starting position for the next gzread or gzwrite on the given
 
1459
   compressed file.  This position represents a number of bytes in the
 
1460
   uncompressed data stream, and is zero when starting, even if appending or
 
1461
   reading a gzip stream from the middle of a file using gzdopen().
 
1462
 
 
1463
     gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
 
1464
*/
 
1465
 
1210
1466
/*
1211
 
     Returns the starting position for the next gzread or gzwrite on the
1212
 
   given compressed file. This position represents a number of bytes in the
1213
 
   uncompressed data stream.
 
1467
ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file));
1214
1468
 
1215
 
   gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
 
1469
     Returns the current offset in the file being read or written.  This offset
 
1470
   includes the count of bytes that precede the gzip stream, for example when
 
1471
   appending or when using gzdopen() for reading.  When reading, the offset
 
1472
   does not include as yet unused buffered input.  This information can be used
 
1473
   for a progress indicator.  On error, gzoffset() returns -1.
1216
1474
*/
1217
1475
 
1218
1476
ZEXTERN int ZEXPORT gzeof OF((gzFile file));
1219
1477
/*
1220
 
     Returns 1 when EOF has previously been detected reading the given
1221
 
   input stream, otherwise zero.
 
1478
     Returns true (1) if the end-of-file indicator has been set while reading,
 
1479
   false (0) otherwise.  Note that the end-of-file indicator is set only if the
 
1480
   read tried to go past the end of the input, but came up short.  Therefore,
 
1481
   just like feof(), gzeof() may return false even if there is no more data to
 
1482
   read, in the event that the last read request was for the exact number of
 
1483
   bytes remaining in the input file.  This will happen if the input file size
 
1484
   is an exact multiple of the buffer size.
 
1485
 
 
1486
     If gzeof() returns true, then the read functions will return no more data,
 
1487
   unless the end-of-file indicator is reset by gzclearerr() and the input file
 
1488
   has grown since the previous end of file was detected.
1222
1489
*/
1223
1490
 
1224
1491
ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
1225
1492
/*
1226
 
     Returns 1 if file is being read directly without decompression, otherwise
1227
 
   zero.
 
1493
     Returns true (1) if file is being copied directly while reading, or false
 
1494
   (0) if file is a gzip stream being decompressed.
 
1495
 
 
1496
     If the input file is empty, gzdirect() will return true, since the input
 
1497
   does not contain a gzip stream.
 
1498
 
 
1499
     If gzdirect() is used immediately after gzopen() or gzdopen() it will
 
1500
   cause buffers to be allocated to allow reading the file to determine if it
 
1501
   is a gzip file.  Therefore if gzbuffer() is used, it should be called before
 
1502
   gzdirect().
 
1503
 
 
1504
     When writing, gzdirect() returns true (1) if transparent writing was
 
1505
   requested ("wT" for the gzopen() mode), or false (0) otherwise.  (Note:
 
1506
   gzdirect() is not needed when writing.  Transparent writing must be
 
1507
   explicitly requested, so the application already knows the answer.  When
 
1508
   linking statically, using gzdirect() will include all of the zlib code for
 
1509
   gzip file reading and decompression, which may not be desired.)
1228
1510
*/
1229
1511
 
1230
1512
ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
1231
1513
/*
1232
 
     Flushes all pending output if necessary, closes the compressed file
1233
 
   and deallocates all the (de)compression state. The return value is the zlib
1234
 
   error number (see function gzerror below).
 
1514
     Flushes all pending output if necessary, closes the compressed file and
 
1515
   deallocates the (de)compression state.  Note that once file is closed, you
 
1516
   cannot call gzerror with file, since its structures have been deallocated.
 
1517
   gzclose must not be called more than once on the same file, just as free
 
1518
   must not be called more than once on the same allocation.
 
1519
 
 
1520
     gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a
 
1521
   file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the
 
1522
   last read ended in the middle of a gzip stream, or Z_OK on success.
 
1523
*/
 
1524
 
 
1525
ZEXTERN int ZEXPORT gzclose_r OF((gzFile file));
 
1526
ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
 
1527
/*
 
1528
     Same as gzclose(), but gzclose_r() is only for use when reading, and
 
1529
   gzclose_w() is only for use when writing or appending.  The advantage to
 
1530
   using these instead of gzclose() is that they avoid linking in zlib
 
1531
   compression or decompression code that is not used when only reading or only
 
1532
   writing respectively.  If gzclose() is used, then both compression and
 
1533
   decompression code will be included the application when linking to a static
 
1534
   zlib library.
1235
1535
*/
1236
1536
 
1237
1537
ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
1238
1538
/*
1239
 
     Returns the error message for the last error which occurred on the
1240
 
   given compressed file. errnum is set to zlib error number. If an
1241
 
   error occurred in the file system and not in the compression library,
1242
 
   errnum is set to Z_ERRNO and the application may consult errno
1243
 
   to get the exact error code.
 
1539
     Returns the error message for the last error which occurred on the given
 
1540
   compressed file.  errnum is set to zlib error number.  If an error occurred
 
1541
   in the file system and not in the compression library, errnum is set to
 
1542
   Z_ERRNO and the application may consult errno to get the exact error code.
 
1543
 
 
1544
     The application must not modify the returned string.  Future calls to
 
1545
   this function may invalidate the previously returned string.  If file is
 
1546
   closed, then the string previously returned by gzerror will no longer be
 
1547
   available.
 
1548
 
 
1549
     gzerror() should be used to distinguish errors from end-of-file for those
 
1550
   functions above that do not distinguish those cases in their return values.
1244
1551
*/
1245
1552
 
1246
1553
ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
1247
1554
/*
1248
 
     Clears the error and end-of-file flags for file. This is analogous to the
1249
 
   clearerr() function in stdio. This is useful for continuing to read a gzip
 
1555
     Clears the error and end-of-file flags for file.  This is analogous to the
 
1556
   clearerr() function in stdio.  This is useful for continuing to read a gzip
1250
1557
   file that is being written concurrently.
1251
1558
*/
1252
1559
 
 
1560
#endif /* !Z_SOLO */
 
1561
 
1253
1562
                        /* checksum functions */
1254
1563
 
1255
1564
/*
1256
1565
     These functions are not related to compression but are exported
1257
 
   anyway because they might be useful in applications using the
1258
 
   compression library.
 
1566
   anyway because they might be useful in applications using the compression
 
1567
   library.
1259
1568
*/
1260
1569
 
1261
1570
ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
1262
1571
/*
1263
1572
     Update a running Adler-32 checksum with the bytes buf[0..len-1] and
1264
 
   return the updated checksum. If buf is NULL, this function returns
1265
 
   the required initial value for the checksum.
1266
 
   An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
1267
 
   much faster. Usage example:
 
1573
   return the updated checksum.  If buf is Z_NULL, this function returns the
 
1574
   required initial value for the checksum.
 
1575
 
 
1576
     An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
 
1577
   much faster.
 
1578
 
 
1579
   Usage example:
1268
1580
 
1269
1581
     uLong adler = adler32(0L, Z_NULL, 0);
1270
1582
 
1274
1586
     if (adler != original_adler) error();
1275
1587
*/
1276
1588
 
 
1589
/*
1277
1590
ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
1278
1591
                                          z_off_t len2));
1279
 
/*
 
1592
 
1280
1593
     Combine two Adler-32 checksums into one.  For two sequences of bytes, seq1
1281
1594
   and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
1282
1595
   each, adler1 and adler2.  adler32_combine() returns the Adler-32 checksum of
1283
 
   seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.
 
1596
   seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.  Note
 
1597
   that the z_off_t type (like off_t) is a signed integer.  If len2 is
 
1598
   negative, the result has no meaning or utility.
1284
1599
*/
1285
1600
 
1286
1601
ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
1287
1602
/*
1288
1603
     Update a running CRC-32 with the bytes buf[0..len-1] and return the
1289
 
   updated CRC-32. If buf is NULL, this function returns the required initial
1290
 
   value for the for the crc. Pre- and post-conditioning (one's complement) is
 
1604
   updated CRC-32.  If buf is Z_NULL, this function returns the required
 
1605
   initial value for the crc.  Pre- and post-conditioning (one's complement) is
1291
1606
   performed within this function so it shouldn't be done by the application.
 
1607
 
1292
1608
   Usage example:
1293
1609
 
1294
1610
     uLong crc = crc32(0L, Z_NULL, 0);
1299
1615
     if (crc != original_crc) error();
1300
1616
*/
1301
1617
 
 
1618
/*
1302
1619
ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
1303
1620
 
1304
 
/*
1305
1621
     Combine two CRC-32 check values into one.  For two sequences of bytes,
1306
1622
   seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
1307
1623
   calculated for each, crc1 and crc2.  crc32_combine() returns the CRC-32
1330
1646
                                         const char *version,
1331
1647
                                         int stream_size));
1332
1648
#define deflateInit(strm, level) \
1333
 
        deflateInit_((strm), (level),       ZLIB_VERSION, sizeof(z_stream))
 
1649
        deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))
1334
1650
#define inflateInit(strm) \
1335
 
        inflateInit_((strm),                ZLIB_VERSION, sizeof(z_stream))
 
1651
        inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream))
1336
1652
#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
1337
1653
        deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
1338
 
                      (strategy),           ZLIB_VERSION, sizeof(z_stream))
 
1654
                      (strategy), ZLIB_VERSION, (int)sizeof(z_stream))
1339
1655
#define inflateInit2(strm, windowBits) \
1340
 
        inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
 
1656
        inflateInit2_((strm), (windowBits), ZLIB_VERSION, \
 
1657
                      (int)sizeof(z_stream))
1341
1658
#define inflateBackInit(strm, windowBits, window) \
1342
1659
        inflateBackInit_((strm), (windowBits), (window), \
1343
 
        ZLIB_VERSION, sizeof(z_stream))
1344
 
 
1345
 
 
 
1660
                      ZLIB_VERSION, (int)sizeof(z_stream))
 
1661
 
 
1662
#ifndef Z_SOLO
 
1663
 
 
1664
/* gzgetc() macro and its supporting function and exposed data structure.  Note
 
1665
 * that the real internal state is much larger than the exposed structure.
 
1666
 * This abbreviated structure exposes just enough for the gzgetc() macro.  The
 
1667
 * user should not mess with these exposed elements, since their names or
 
1668
 * behavior could change in the future, perhaps even capriciously.  They can
 
1669
 * only be used by the gzgetc() macro.  You have been warned.
 
1670
 */
 
1671
struct gzFile_s {
 
1672
    unsigned have;
 
1673
    unsigned char *next;
 
1674
    z_off64_t pos;
 
1675
};
 
1676
ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file));  /* backward compatibility */
 
1677
#ifdef Z_PREFIX_SET
 
1678
#  undef z_gzgetc
 
1679
#  define z_gzgetc(g) \
 
1680
          ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
 
1681
#else
 
1682
#  define gzgetc(g) \
 
1683
          ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
 
1684
#endif
 
1685
 
 
1686
/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or
 
1687
 * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if
 
1688
 * both are true, the application gets the *64 functions, and the regular
 
1689
 * functions are changed to 64 bits) -- in case these are set on systems
 
1690
 * without large file support, _LFS64_LARGEFILE must also be true
 
1691
 */
 
1692
#ifdef Z_LARGE64
 
1693
   ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
 
1694
   ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
 
1695
   ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
 
1696
   ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
 
1697
   ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t));
 
1698
   ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
 
1699
#endif
 
1700
 
 
1701
#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64)
 
1702
#  ifdef Z_PREFIX_SET
 
1703
#    define z_gzopen z_gzopen64
 
1704
#    define z_gzseek z_gzseek64
 
1705
#    define z_gztell z_gztell64
 
1706
#    define z_gzoffset z_gzoffset64
 
1707
#    define z_adler32_combine z_adler32_combine64
 
1708
#    define z_crc32_combine z_crc32_combine64
 
1709
#  else
 
1710
#    define gzopen gzopen64
 
1711
#    define gzseek gzseek64
 
1712
#    define gztell gztell64
 
1713
#    define gzoffset gzoffset64
 
1714
#    define adler32_combine adler32_combine64
 
1715
#    define crc32_combine crc32_combine64
 
1716
#  endif
 
1717
#  ifndef Z_LARGE64
 
1718
     ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
 
1719
     ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int));
 
1720
     ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile));
 
1721
     ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile));
 
1722
     ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
 
1723
     ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
 
1724
#  endif
 
1725
#else
 
1726
   ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));
 
1727
   ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int));
 
1728
   ZEXTERN z_off_t ZEXPORT gztell OF((gzFile));
 
1729
   ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile));
 
1730
   ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
 
1731
   ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
 
1732
#endif
 
1733
 
 
1734
#else /* Z_SOLO */
 
1735
 
 
1736
   ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
 
1737
   ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
 
1738
 
 
1739
#endif /* !Z_SOLO */
 
1740
 
 
1741
/* hack for buggy compilers */
1346
1742
#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
1347
 
    struct internal_state {int dummy;}; /* hack for buggy compilers */
 
1743
    struct internal_state {int dummy;};
1348
1744
#endif
1349
1745
 
 
1746
/* undocumented functions */
1350
1747
ZEXTERN const char   * ZEXPORT zError           OF((int));
1351
 
ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp z));
1352
 
ZEXTERN const uLongf * ZEXPORT get_crc_table    OF((void));
 
1748
ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp));
 
1749
ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table    OF((void));
 
1750
ZEXTERN int            ZEXPORT inflateUndermine OF((z_streamp, int));
 
1751
ZEXTERN int            ZEXPORT inflateResetKeep OF((z_streamp));
 
1752
ZEXTERN int            ZEXPORT deflateResetKeep OF((z_streamp));
 
1753
#if defined(_WIN32) && !defined(Z_SOLO)
 
1754
ZEXTERN gzFile         ZEXPORT gzopen_w OF((const wchar_t *path,
 
1755
                                            const char *mode));
 
1756
#endif
 
1757
#if defined(STDC) || defined(Z_HAVE_STDARG_H)
 
1758
#  ifndef Z_SOLO
 
1759
ZEXTERN int            ZEXPORTVA gzvprintf Z_ARG((gzFile file,
 
1760
                                                  const char *format,
 
1761
                                                  va_list va));
 
1762
#  endif
 
1763
#endif
1353
1764
 
1354
1765
#ifdef __cplusplus
1355
1766
}