208
211
#define zlib_version zlibVersion()
209
212
/* for compatibility with versions < 1.0.2 */
211
215
/* basic functions */
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.
221
225
ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
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.
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).
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().
243
247
ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
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
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:
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().
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.
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.
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.
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
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
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.
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
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.
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.
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.
310
335
deflate() sets strm->adler to the adler32 checksum of all input read
311
336
so far (that is, total_in bytes).
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.
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.
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.
364
393
ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
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
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:
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().
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).
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.
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).
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
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.
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
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.
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.
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
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.
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.
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
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.
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
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
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
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.
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.
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.
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.
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.
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
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.
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().
539
588
ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
695
771
ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
696
772
int windowBits));
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.
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.
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.
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.
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.
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.
737
820
ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
739
822
uInt dictLength));
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.
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
843
ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm,
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.
854
inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the
855
stream state is inconsistent.
759
858
ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
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.
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.
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.
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.
774
877
ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
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.
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.
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.
932
inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
813
933
stream state was inconsistent.
936
ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm));
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
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.
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.
960
inflateMark returns the value noted above or -1 << 16 if the provided
961
source stream state was inconsistent.
816
964
ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
817
965
gz_headerp head));
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.
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.
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.
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.
1041
1191
ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
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.
1048
1198
ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
1049
1199
const Bytef *source, uLong sourceLen));
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.
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.
1067
typedef voidp gzFile;
1069
ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
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.
1216
/* gzip file access functions */
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.
1225
typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */
1228
ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
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
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.
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.
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.
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). */
1086
ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
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-
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.
1265
ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
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.
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
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).
1288
ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
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).
1299
The new buffer size also affects the maximum length for gzprintf().
1301
gzbuffer() returns 0 on success, or -1 on failure, such as being called
1099
1305
ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
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.
1103
1310
gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
1104
1311
opened for writing.
1107
ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
1314
ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
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). */
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.
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).
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
1338
gzread returns the number of uncompressed bytes actually read, less than
1339
len for end of file, or -1 for error.
1342
ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
1343
voidpc buf, unsigned len));
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
1123
ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...));
1350
ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
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
1136
1365
ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
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.
1370
gzputs returns the number of characters written, or -1 in case of error.
1143
1373
ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
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
1149
gzgets returns buf, or Z_NULL in case of error.
1152
ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
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.
1158
ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
1160
Reads one byte from the compressed file. gzgetc returns this byte
1161
or -1 in case of end of file or error.
1164
ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
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()
1174
ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
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.
1184
ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
1185
z_off_t offset, int whence));
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.
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.
1386
ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
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.
1392
ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
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.
1401
ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
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().
1413
ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
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.
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.
1424
gzflush should be called only when strictly necessary because it will
1425
degrade compression if called too often.
1429
ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
1430
z_off_t offset, int whence));
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.
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.
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.
1204
1450
Rewinds the given file. This function is supported only for reading.
1206
gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
1452
gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
1209
1456
ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
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().
1463
gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
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));
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.
1218
1476
ZEXTERN int ZEXPORT gzeof OF((gzFile file));
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.
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.
1224
1491
ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
1226
Returns 1 if file is being read directly without decompression, otherwise
1493
Returns true (1) if file is being copied directly while reading, or false
1494
(0) if file is a gzip stream being decompressed.
1496
If the input file is empty, gzdirect() will return true, since the input
1497
does not contain a gzip stream.
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
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.)
1230
1512
ZEXTERN int ZEXPORT gzclose OF((gzFile file));
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.
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.
1525
ZEXTERN int ZEXPORT gzclose_r OF((gzFile file));
1526
ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
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
1237
1537
ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
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.
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
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.
1246
1553
ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
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.
1560
#endif /* !Z_SOLO */
1253
1562
/* checksum functions */
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
1261
1570
ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
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.
1576
An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
1269
1581
uLong adler = adler32(0L, Z_NULL, 0);
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))
1660
ZLIB_VERSION, (int)sizeof(z_stream))
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.
1673
unsigned char *next;
1676
ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
1679
# define z_gzgetc(g) \
1680
((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
1682
# define gzgetc(g) \
1683
((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
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
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));
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
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
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));
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));
1736
ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
1737
ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
1739
#endif /* !Z_SOLO */
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;};
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,
1757
#if defined(STDC) || defined(Z_HAVE_STDARG_H)
1759
ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file,
1354
1765
#ifdef __cplusplus