diff options
author | Mark Adler <madler@alumni.caltech.edu> | 2016-11-14 10:19:25 -0700 |
---|---|---|
committer | Mark Adler <madler@alumni.caltech.edu> | 2016-12-04 07:48:41 -0800 |
commit | 001300d0d91f75f03eed5ec97eca160452f62d61 (patch) | |
tree | df45fa0c8de461d27ffb9c68a1b9c7a2a72d0b8f | |
parent | 9674807c82ae06716a678d7374362acdb6f041b5 (diff) | |
download | zlib-001300d0d91f75f03eed5ec97eca160452f62d61.tar.gz zlib-001300d0d91f75f03eed5ec97eca160452f62d61.tar.bz2 zlib-001300d0d91f75f03eed5ec97eca160452f62d61.zip |
Minor edits to the documentation in source file contents.
-rw-r--r-- | zconf.h | 2 | ||||
-rw-r--r-- | zconf.h.cmakein | 2 | ||||
-rw-r--r-- | zconf.h.in | 2 | ||||
-rw-r--r-- | zlib.h | 196 |
4 files changed, 109 insertions, 93 deletions
@@ -251,7 +251,7 @@ | |||
251 | Of course this will generally degrade compression (there's no free lunch). | 251 | Of course this will generally degrade compression (there's no free lunch). |
252 | 252 | ||
253 | The memory requirements for inflate are (in bytes) 1 << windowBits | 253 | The memory requirements for inflate are (in bytes) 1 << windowBits |
254 | that is, 32K for windowBits=15 (default value) plus a few kilobytes | 254 | that is, 32K for windowBits=15 (default value) plus about 7 kilobytes |
255 | for small objects. | 255 | for small objects. |
256 | */ | 256 | */ |
257 | 257 | ||
diff --git a/zconf.h.cmakein b/zconf.h.cmakein index 752eb88..70942e4 100644 --- a/zconf.h.cmakein +++ b/zconf.h.cmakein | |||
@@ -253,7 +253,7 @@ | |||
253 | Of course this will generally degrade compression (there's no free lunch). | 253 | Of course this will generally degrade compression (there's no free lunch). |
254 | 254 | ||
255 | The memory requirements for inflate are (in bytes) 1 << windowBits | 255 | The memory requirements for inflate are (in bytes) 1 << windowBits |
256 | that is, 32K for windowBits=15 (default value) plus a few kilobytes | 256 | that is, 32K for windowBits=15 (default value) plus about 7 kilobytes |
257 | for small objects. | 257 | for small objects. |
258 | */ | 258 | */ |
259 | 259 | ||
@@ -251,7 +251,7 @@ | |||
251 | Of course this will generally degrade compression (there's no free lunch). | 251 | Of course this will generally degrade compression (there's no free lunch). |
252 | 252 | ||
253 | The memory requirements for inflate are (in bytes) 1 << windowBits | 253 | The memory requirements for inflate are (in bytes) 1 << windowBits |
254 | that is, 32K for windowBits=15 (default value) plus a few kilobytes | 254 | that is, 32K for windowBits=15 (default value) plus about 7 kilobytes |
255 | for small objects. | 255 | for small objects. |
256 | */ | 256 | */ |
257 | 257 | ||
@@ -65,7 +65,8 @@ extern "C" { | |||
65 | with "gz". The gzip format is different from the zlib format. gzip is a | 65 | with "gz". The gzip format is different from the zlib format. gzip is a |
66 | gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. | 66 | gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. |
67 | 67 | ||
68 | This library can optionally read and write gzip streams in memory as well. | 68 | This library can optionally read and write gzip and raw deflate streams in |
69 | memory as well. | ||
69 | 70 | ||
70 | The zlib format was designed to be compact and fast for use in memory | 71 | The zlib format was designed to be compact and fast for use in memory |
71 | and on communications channels. The gzip format was designed for single- | 72 | and on communications channels. The gzip format was designed for single- |
@@ -74,7 +75,7 @@ extern "C" { | |||
74 | 75 | ||
75 | The library does not install any signal handler. The decoder checks | 76 | 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 | the consistency of the compressed data, so the library should never crash |
77 | even in case of corrupted input. | 78 | even in the case of corrupted input. |
78 | */ | 79 | */ |
79 | 80 | ||
80 | typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); | 81 | typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); |
@@ -87,7 +88,7 @@ typedef struct z_stream_s { | |||
87 | uInt avail_in; /* number of bytes available at next_in */ | 88 | uInt avail_in; /* number of bytes available at next_in */ |
88 | uLong total_in; /* total number of input bytes read so far */ | 89 | uLong total_in; /* total number of input bytes read so far */ |
89 | 90 | ||
90 | Bytef *next_out; /* next output byte should be put there */ | 91 | Bytef *next_out; /* next output byte will go here */ |
91 | uInt avail_out; /* remaining free space at next_out */ | 92 | uInt avail_out; /* remaining free space at next_out */ |
92 | uLong total_out; /* total number of bytes output so far */ | 93 | uLong total_out; /* total number of bytes output so far */ |
93 | 94 | ||
@@ -98,8 +99,9 @@ typedef struct z_stream_s { | |||
98 | free_func zfree; /* used to free the internal state */ | 99 | free_func zfree; /* used to free the internal state */ |
99 | voidpf opaque; /* private data object passed to zalloc and zfree */ | 100 | voidpf opaque; /* private data object passed to zalloc and zfree */ |
100 | 101 | ||
101 | int data_type; /* best guess about the data type: binary or text */ | 102 | int data_type; /* best guess about the data type: binary or text |
102 | uLong adler; /* adler32 value of the uncompressed data */ | 103 | for deflate, or the decoding state for inflate */ |
104 | uLong adler; /* Adler-32 or CRC-32 value of the uncompressed data */ | ||
103 | uLong reserved; /* reserved for future use */ | 105 | uLong reserved; /* reserved for future use */ |
104 | } z_stream; | 106 | } z_stream; |
105 | 107 | ||
@@ -142,7 +144,9 @@ typedef gz_header FAR *gz_headerp; | |||
142 | 144 | ||
143 | zalloc must return Z_NULL if there is not enough memory for the object. | 145 | zalloc must return Z_NULL if there is not enough memory for the object. |
144 | If zlib is used in a multi-threaded application, zalloc and zfree must be | 146 | If zlib is used in a multi-threaded application, zalloc and zfree must be |
145 | thread safe. | 147 | thread safe. In that case, zlib is thread-safe. When zalloc and zfree are |
148 | Z_NULL on entry to the initialization function, they are set to internal | ||
149 | routines that use the standard library functions malloc() and free(). | ||
146 | 150 | ||
147 | On 16-bit systems, the functions zalloc and zfree must be able to allocate | 151 | 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 | 152 | exactly 65536 bytes, but will not be required to allocate more than this if |
@@ -155,7 +159,7 @@ typedef gz_header FAR *gz_headerp; | |||
155 | 159 | ||
156 | The fields total_in and total_out can be used for statistics or progress | 160 | 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 | 161 | reports. After compression, total_in holds the total size of the |
158 | uncompressed data and may be saved for use in the decompressor (particularly | 162 | uncompressed data and may be saved for use by the decompressor (particularly |
159 | if the decompressor wants to decompress everything in a single step). | 163 | if the decompressor wants to decompress everything in a single step). |
160 | */ | 164 | */ |
161 | 165 | ||
@@ -200,7 +204,7 @@ typedef gz_header FAR *gz_headerp; | |||
200 | #define Z_TEXT 1 | 204 | #define Z_TEXT 1 |
201 | #define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ | 205 | #define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ |
202 | #define Z_UNKNOWN 2 | 206 | #define Z_UNKNOWN 2 |
203 | /* Possible values of the data_type field (though see inflate()) */ | 207 | /* Possible values of the data_type field for deflate() */ |
204 | 208 | ||
205 | #define Z_DEFLATED 8 | 209 | #define Z_DEFLATED 8 |
206 | /* The deflate compression method (the only one supported in this version) */ | 210 | /* The deflate compression method (the only one supported in this version) */ |
@@ -258,11 +262,11 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); | |||
258 | enough room in the output buffer), next_in and avail_in are updated and | 262 | enough room in the output buffer), next_in and avail_in are updated and |
259 | processing will resume at this point for the next call of deflate(). | 263 | processing will resume at this point for the next call of deflate(). |
260 | 264 | ||
261 | - Provide more output starting at next_out and update next_out and avail_out | 265 | - Generate more output starting at next_out and update next_out and avail_out |
262 | accordingly. This action is forced if the parameter flush is non zero. | 266 | accordingly. This action is forced if the parameter flush is non zero. |
263 | Forcing flush frequently degrades the compression ratio, so this parameter | 267 | Forcing flush frequently degrades the compression ratio, so this parameter |
264 | should be set only when necessary (in interactive applications). Some | 268 | should be set only when necessary. Some output may be provided even if |
265 | output may be provided even if flush is not set. | 269 | flush is zero. |
266 | 270 | ||
267 | Before the call of deflate(), the application should ensure that at least | 271 | Before the call of deflate(), the application should ensure that at least |
268 | one of the actions is possible, by providing more input and/or consuming more | 272 | one of the actions is possible, by providing more input and/or consuming more |
@@ -271,7 +275,9 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); | |||
271 | output when it wants, for example when the output buffer is full (avail_out | 275 | output when it wants, for example when the output buffer is full (avail_out |
272 | == 0), or after each call of deflate(). If deflate returns Z_OK and with | 276 | == 0), or after each call of deflate(). If deflate returns Z_OK and with |
273 | zero avail_out, it must be called again after making room in the output | 277 | zero avail_out, it must be called again after making room in the output |
274 | buffer because there might be more output pending. | 278 | buffer because there might be more output pending. See deflatePending(), |
279 | which can be used if desired to determine whether or not there is more ouput | ||
280 | in that case. | ||
275 | 281 | ||
276 | Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to | 282 | Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to |
277 | decide how much data to accumulate before producing output, in order to | 283 | decide how much data to accumulate before producing output, in order to |
@@ -292,8 +298,8 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); | |||
292 | input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. | 298 | input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. |
293 | This completes the current deflate block and follows it with an empty fixed | 299 | This completes the current deflate block and follows it with an empty fixed |
294 | codes block that is 10 bits long. This assures that enough bytes are output | 300 | codes block that is 10 bits long. This assures that enough bytes are output |
295 | in order for the decompressor to finish the block before the empty fixed code | 301 | in order for the decompressor to finish the block before the empty fixed |
296 | block. | 302 | codes block. |
297 | 303 | ||
298 | If flush is set to Z_BLOCK, a deflate block is completed and emitted, as | 304 | If flush is set to Z_BLOCK, a deflate block is completed and emitted, as |
299 | for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to | 305 | for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to |
@@ -319,34 +325,38 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); | |||
319 | 325 | ||
320 | If the parameter flush is set to Z_FINISH, pending input is processed, | 326 | If the parameter flush is set to Z_FINISH, pending input is processed, |
321 | pending output is flushed and deflate returns with Z_STREAM_END if there was | 327 | pending output is flushed and deflate returns with Z_STREAM_END if there was |
322 | enough output space; if deflate returns with Z_OK, this function must be | 328 | enough output space. If deflate returns with Z_OK or Z_BUF_ERROR, this |
323 | called again with Z_FINISH and more output space (updated avail_out) but no | 329 | function must be called again with Z_FINISH and more output space (updated |
324 | more input data, until it returns with Z_STREAM_END or an error. After | 330 | avail_out) but no more input data, until it returns with Z_STREAM_END or an |
325 | deflate has returned Z_STREAM_END, the only possible operations on the stream | 331 | error. After deflate has returned Z_STREAM_END, the only possible operations |
326 | are deflateReset or deflateEnd. | 332 | on the stream are deflateReset or deflateEnd. |
327 | 333 | ||
328 | Z_FINISH can be used immediately after deflateInit if all the compression | 334 | Z_FINISH can be used in the first deflate call after deflateInit if all the |
329 | is to be done in a single step. In this case, avail_out must be at least the | 335 | compression is to be done in a single step. In order to complete in one |
330 | value returned by deflateBound (see below). Then deflate is guaranteed to | 336 | call, avail_out must be at least the value returned by deflateBound (see |
331 | return Z_STREAM_END. If not enough output space is provided, deflate will | 337 | below). Then deflate is guaranteed to return Z_STREAM_END. If not enough |
332 | not return Z_STREAM_END, and it must be called again as described above. | 338 | output space is provided, deflate will not return Z_STREAM_END, and it must |
333 | 339 | be called again as described above. | |
334 | deflate() sets strm->adler to the adler32 checksum of all input read | 340 | |
335 | so far (that is, total_in bytes). | 341 | deflate() sets strm->adler to the Adler-32 checksum of all input read |
342 | so far (that is, total_in bytes). If a gzip stream is being generated, then | ||
343 | strm->adler will be the CRC-32 checksum of the input read so far. (See | ||
344 | deflateInit2 below.) | ||
336 | 345 | ||
337 | deflate() may update strm->data_type if it can make a good guess about | 346 | deflate() may update strm->data_type if it can make a good guess about |
338 | the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered | 347 | the input data type (Z_BINARY or Z_TEXT). If in doubt, the data is |
339 | binary. This field is only for information purposes and does not affect the | 348 | considered binary. This field is only for information purposes and does not |
340 | compression algorithm in any manner. | 349 | affect the compression algorithm in any manner. |
341 | 350 | ||
342 | deflate() returns Z_OK if some progress has been made (more input | 351 | deflate() returns Z_OK if some progress has been made (more input |
343 | processed or more output produced), Z_STREAM_END if all input has been | 352 | processed or more output produced), Z_STREAM_END if all input has been |
344 | consumed and all output has been produced (only when flush is set to | 353 | consumed and all output has been produced (only when flush is set to |
345 | Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example | 354 | Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example |
346 | if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible | 355 | if next_in or next_out was Z_NULL or the state was inadvertently written over |
347 | (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not | 356 | by the application), or Z_BUF_ERROR if no progress is possible (for example |
348 | fatal, and deflate() can be called again with more input and more output | 357 | avail_in or avail_out was zero). Note that Z_BUF_ERROR is not fatal, and |
349 | space to continue compressing. | 358 | deflate() can be called again with more input and more output space to |
359 | continue compressing. | ||
350 | */ | 360 | */ |
351 | 361 | ||
352 | 362 | ||
@@ -369,23 +379,20 @@ ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); | |||
369 | 379 | ||
370 | Initializes the internal stream state for decompression. The fields | 380 | Initializes the internal stream state for decompression. The fields |
371 | next_in, avail_in, zalloc, zfree and opaque must be initialized before by | 381 | next_in, avail_in, zalloc, zfree and opaque must be initialized before by |
372 | the caller. If next_in is not Z_NULL and avail_in is large enough (the | 382 | the caller. In the current version of inflate, the provide input is not |
373 | exact value depends on the compression method), inflateInit determines the | 383 | read or consumed. Any memory allocation will be deferred to the first call |
374 | compression method from the zlib header and allocates all data structures | 384 | of inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them |
375 | accordingly; otherwise the allocation will be deferred to the first call of | 385 | to use default allocation functions. |
376 | inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to | ||
377 | use default allocation functions. | ||
378 | 386 | ||
379 | inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough | 387 | inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough |
380 | memory, Z_VERSION_ERROR if the zlib library version is incompatible with the | 388 | memory, Z_VERSION_ERROR if the zlib library version is incompatible with the |
381 | version assumed by the caller, or Z_STREAM_ERROR if the parameters are | 389 | version assumed by the caller, or Z_STREAM_ERROR if the parameters are |
382 | invalid, such as a null pointer to the structure. msg is set to null if | 390 | invalid, such as a null pointer to the structure. msg is set to null if |
383 | there is no error message. inflateInit does not perform any decompression | 391 | there is no error message. inflateInit does not perform any decompression. |
384 | apart from possibly reading the zlib header if present: actual decompression | 392 | Actual decompression will be done by inflate(). So next_in, and avail_in, |
385 | will be done by inflate(). (So next_in and avail_in may be modified, but | 393 | next_out, and avail_out are unused and unchanged. The current |
386 | next_out and avail_out are unused and unchanged.) The current implementation | 394 | implementation of inflateInit() does not process any header information -- |
387 | of inflateInit() does not process any header information -- that is deferred | 395 | that is deferred until inflate() is called. |
388 | until inflate() is called. | ||
389 | */ | 396 | */ |
390 | 397 | ||
391 | 398 | ||
@@ -401,17 +408,20 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); | |||
401 | 408 | ||
402 | - Decompress more input starting at next_in and update next_in and avail_in | 409 | - Decompress more input starting at next_in and update next_in and avail_in |
403 | accordingly. If not all input can be processed (because there is not | 410 | accordingly. If not all input can be processed (because there is not |
404 | enough room in the output buffer), next_in is updated and processing will | 411 | enough room in the output buffer), then next_in and avail_on are updated |
405 | resume at this point for the next call of inflate(). | 412 | accordingly, and processing will resume at this point for the next call of |
413 | inflate(). | ||
406 | 414 | ||
407 | - Provide more output starting at next_out and update next_out and avail_out | 415 | - Generate more output starting at next_out and update next_out and avail_out |
408 | accordingly. inflate() provides as much output as possible, until there is | 416 | accordingly. inflate() provides as much output as possible, until there is |
409 | no more input data or no more space in the output buffer (see below about | 417 | no more input data or no more space in the output buffer (see below about |
410 | the flush parameter). | 418 | the flush parameter). |
411 | 419 | ||
412 | Before the call of inflate(), the application should ensure that at least | 420 | Before the call of inflate(), the application should ensure that at least |
413 | one of the actions is possible, by providing more input and/or consuming more | 421 | one of the actions is possible, by providing more input and/or consuming more |
414 | output, and updating the next_* and avail_* values accordingly. The | 422 | output, and updating the next_* and avail_* values accordingly. If the |
423 | caller of inflate() does not provide both available input and available | ||
424 | output space, it is possible that there will be no progress made. The | ||
415 | application can consume the uncompressed output when it wants, for example | 425 | application can consume the uncompressed output when it wants, for example |
416 | when the output buffer is full (avail_out == 0), or after each call of | 426 | when the output buffer is full (avail_out == 0), or after each call of |
417 | inflate(). If inflate returns Z_OK and with zero avail_out, it must be | 427 | inflate(). If inflate returns Z_OK and with zero avail_out, it must be |
@@ -428,7 +438,7 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); | |||
428 | gets to the end of that block, or when it runs out of data. | 438 | gets to the end of that block, or when it runs out of data. |
429 | 439 | ||
430 | The Z_BLOCK option assists in appending to or combining deflate streams. | 440 | The Z_BLOCK option assists in appending to or combining deflate streams. |
431 | Also to assist in this, on return inflate() will set strm->data_type to the | 441 | To assist in this, on return inflate() always sets strm->data_type to the |
432 | number of unused bits in the last byte taken from strm->next_in, plus 64 if | 442 | number of unused bits in the last byte taken from strm->next_in, plus 64 if |
433 | inflate() is currently decoding the last block in the deflate stream, plus | 443 | inflate() is currently decoding the last block in the deflate stream, plus |
434 | 128 if inflate() returned immediately after decoding an end-of-block code or | 444 | 128 if inflate() returned immediately after decoding an end-of-block code or |
@@ -454,7 +464,7 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); | |||
454 | this case all pending input is processed and all pending output is flushed; | 464 | this case all pending input is processed and all pending output is flushed; |
455 | avail_out must be large enough to hold all of the uncompressed data for the | 465 | avail_out must be large enough to hold all of the uncompressed data for the |
456 | operation to complete. (The size of the uncompressed data may have been | 466 | operation to complete. (The size of the uncompressed data may have been |
457 | saved by the compressor for this purpose.) The use of Z_FINISH is not | 467 | saved by the compressor for this purpose.) The use of Z_FINISH is not |
458 | required to perform an inflation in one step. However it may be used to | 468 | required to perform an inflation in one step. However it may be used to |
459 | inform inflate that a faster approach can be used for the single inflate() | 469 | inform inflate that a faster approach can be used for the single inflate() |
460 | call. Z_FINISH also informs inflate to not maintain a sliding window if the | 470 | call. Z_FINISH also informs inflate to not maintain a sliding window if the |
@@ -476,32 +486,33 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); | |||
476 | chosen by the compressor and returns Z_NEED_DICT; otherwise it sets | 486 | chosen by the compressor and returns Z_NEED_DICT; otherwise it sets |
477 | strm->adler to the Adler-32 checksum of all output produced so far (that is, | 487 | strm->adler to the Adler-32 checksum of all output produced so far (that is, |
478 | total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described | 488 | total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described |
479 | below. At the end of the stream, inflate() checks that its computed adler32 | 489 | below. At the end of the stream, inflate() checks that its computed Adler-32 |
480 | checksum is equal to that saved by the compressor and returns Z_STREAM_END | 490 | checksum is equal to that saved by the compressor and returns Z_STREAM_END |
481 | only if the checksum is correct. | 491 | only if the checksum is correct. |
482 | 492 | ||
483 | inflate() can decompress and check either zlib-wrapped or gzip-wrapped | 493 | inflate() can decompress and check either zlib-wrapped or gzip-wrapped |
484 | deflate data. The header type is detected automatically, if requested when | 494 | deflate data. The header type is detected automatically, if requested when |
485 | initializing with inflateInit2(). Any information contained in the gzip | 495 | initializing with inflateInit2(). Any information contained in the gzip |
486 | header is not retained, so applications that need that information should | 496 | header is not retained unless inflateGetHeader() is used. When processing |
487 | instead use raw inflate, see inflateInit2() below, or inflateBack() and | ||
488 | perform their own processing of the gzip header and trailer. When processing | ||
489 | gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output | 497 | gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output |
490 | produced so far. The CRC-32 is checked against the gzip trailer. | 498 | produced so far. The CRC-32 is checked against the gzip trailer, as is the |
499 | uncompressed length, modulo 2^32. | ||
491 | 500 | ||
492 | inflate() returns Z_OK if some progress has been made (more input processed | 501 | inflate() returns Z_OK if some progress has been made (more input processed |
493 | or more output produced), Z_STREAM_END if the end of the compressed data has | 502 | or more output produced), Z_STREAM_END if the end of the compressed data has |
494 | been reached and all uncompressed output has been produced, Z_NEED_DICT if a | 503 | been reached and all uncompressed output has been produced, Z_NEED_DICT if a |
495 | preset dictionary is needed at this point, Z_DATA_ERROR if the input data was | 504 | preset dictionary is needed at this point, Z_DATA_ERROR if the input data was |
496 | corrupted (input stream not conforming to the zlib format or incorrect check | 505 | corrupted (input stream not conforming to the zlib format or incorrect check |
497 | value), Z_STREAM_ERROR if the stream structure was inconsistent (for example | 506 | value, in which case strm->msg points to a string with a more specific |
498 | next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, | 507 | error), Z_STREAM_ERROR if the stream structure was inconsistent (for example |
499 | Z_BUF_ERROR if no progress is possible or if there was not enough room in the | 508 | next_in or next_out was Z_NULL, or the state was inadvertently written over |
500 | output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and | 509 | by the application), Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR |
510 | if no progress was possible or if there was not enough room in the output | ||
511 | buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and | ||
501 | inflate() can be called again with more input and more output space to | 512 | inflate() can be called again with more input and more output space to |
502 | continue decompressing. If Z_DATA_ERROR is returned, the application may | 513 | continue decompressing. If Z_DATA_ERROR is returned, the application may |
503 | then call inflateSync() to look for a good compression block if a partial | 514 | then call inflateSync() to look for a good compression block if a partial |
504 | recovery of the data is desired. | 515 | recovery of the data is to be attempted. |
505 | */ | 516 | */ |
506 | 517 | ||
507 | 518 | ||
@@ -511,9 +522,8 @@ ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); | |||
511 | This function discards any unprocessed input and does not flush any pending | 522 | This function discards any unprocessed input and does not flush any pending |
512 | output. | 523 | output. |
513 | 524 | ||
514 | inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state | 525 | inflateEnd returns Z_OK if success, or Z_STREAM_ERROR if the stream state |
515 | was inconsistent. In the error case, msg may be set but then points to a | 526 | was inconsistent. |
516 | static string (which must not be deallocated). | ||
517 | */ | 527 | */ |
518 | 528 | ||
519 | 529 | ||
@@ -554,14 +564,15 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, | |||
554 | 564 | ||
555 | windowBits can also be -8..-15 for raw deflate. In this case, -windowBits | 565 | windowBits can also be -8..-15 for raw deflate. In this case, -windowBits |
556 | determines the window size. deflate() will then generate raw deflate data | 566 | determines the window size. deflate() will then generate raw deflate data |
557 | with no zlib header or trailer, and will not compute an adler32 check value. | 567 | with no zlib header or trailer, and will not compute a check value. |
558 | 568 | ||
559 | windowBits can also be greater than 15 for optional gzip encoding. Add | 569 | windowBits can also be greater than 15 for optional gzip encoding. Add |
560 | 16 to windowBits to write a simple gzip header and trailer around the | 570 | 16 to windowBits to write a simple gzip header and trailer around the |
561 | compressed data instead of a zlib wrapper. The gzip header will have no | 571 | compressed data instead of a zlib wrapper. The gzip header will have no |
562 | file name, no extra data, no comment, no modification time (set to zero), no | 572 | file name, no extra data, no comment, no modification time (set to zero), no |
563 | header crc, and the operating system will be set to 255 (unknown). If a | 573 | header crc, and the operating system will be set to the appropriate value, |
564 | gzip stream is being written, strm->adler is a crc32 instead of an adler32. | 574 | if the operating system was determined at compile time. If a gzip stream is |
575 | being written, strm->adler is a CRC-32 instead of an Adler-32. | ||
565 | 576 | ||
566 | For raw deflate or gzip encoding, a request for a 256-byte window is | 577 | For raw deflate or gzip encoding, a request for a 256-byte window is |
567 | rejected as invalid, since only the zlib header provides a means of | 578 | rejected as invalid, since only the zlib header provides a means of |
@@ -626,12 +637,12 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, | |||
626 | addition, the current implementation of deflate will use at most the window | 637 | addition, the current implementation of deflate will use at most the window |
627 | size minus 262 bytes of the provided dictionary. | 638 | size minus 262 bytes of the provided dictionary. |
628 | 639 | ||
629 | Upon return of this function, strm->adler is set to the adler32 value | 640 | Upon return of this function, strm->adler is set to the Adler-32 value |
630 | of the dictionary; the decompressor may later use this value to determine | 641 | of the dictionary; the decompressor may later use this value to determine |
631 | which dictionary has been used by the compressor. (The adler32 value | 642 | which dictionary has been used by the compressor. (The Adler-32 value |
632 | applies to the whole dictionary even if only a subset of the dictionary is | 643 | applies to the whole dictionary even if only a subset of the dictionary is |
633 | actually used by the compressor.) If a raw deflate was requested, then the | 644 | actually used by the compressor.) If a raw deflate was requested, then the |
634 | adler32 value is not computed and strm->adler is not set. | 645 | Adler-32 value is not computed and strm->adler is not set. |
635 | 646 | ||
636 | deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a | 647 | deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a |
637 | parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is | 648 | parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is |
@@ -819,7 +830,7 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, | |||
819 | is for use with other formats that use the deflate compressed data format | 830 | is for use with other formats that use the deflate compressed data format |
820 | such as zip. Those formats provide their own check values. If a custom | 831 | such as zip. Those formats provide their own check values. If a custom |
821 | format is developed using the raw deflate format for compressed data, it is | 832 | format is developed using the raw deflate format for compressed data, it is |
822 | recommended that a check value such as an adler32 or a crc32 be applied to | 833 | recommended that a check value such as an Adler-32 or a CRC-32 be applied to |
823 | the uncompressed data as is done in the zlib, gzip, and zip formats. For | 834 | the uncompressed data as is done in the zlib, gzip, and zip formats. For |
824 | most applications, the zlib format should be used as is. Note that comments | 835 | most applications, the zlib format should be used as is. Note that comments |
825 | above on the use in deflateInit2() applies to the magnitude of windowBits. | 836 | above on the use in deflateInit2() applies to the magnitude of windowBits. |
@@ -828,7 +839,10 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, | |||
828 | 32 to windowBits to enable zlib and gzip decoding with automatic header | 839 | 32 to windowBits to enable zlib and gzip decoding with automatic header |
829 | detection, or add 16 to decode only the gzip format (the zlib format will | 840 | detection, or add 16 to decode only the gzip format (the zlib format will |
830 | return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a | 841 | return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a |
831 | crc32 instead of an adler32. | 842 | CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see |
843 | below), inflate() will not automatically decode concatenated gzip streams. | ||
844 | inflate() will return Z_STREAM_END at the end of the gzip stream. The state | ||
845 | would need to be reset to continue decoding a subsequent gzip stream. | ||
832 | 846 | ||
833 | inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough | 847 | inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough |
834 | memory, Z_VERSION_ERROR if the zlib library version is incompatible with the | 848 | memory, Z_VERSION_ERROR if the zlib library version is incompatible with the |
@@ -849,7 +863,7 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, | |||
849 | Initializes the decompression dictionary from the given uncompressed byte | 863 | Initializes the decompression dictionary from the given uncompressed byte |
850 | sequence. This function must be called immediately after a call of inflate, | 864 | sequence. This function must be called immediately after a call of inflate, |
851 | if that call returned Z_NEED_DICT. The dictionary chosen by the compressor | 865 | if that call returned Z_NEED_DICT. The dictionary chosen by the compressor |
852 | can be determined from the adler32 value returned by that call of inflate. | 866 | can be determined from the Adler-32 value returned by that call of inflate. |
853 | The compressor and decompressor must use exactly the same dictionary (see | 867 | The compressor and decompressor must use exactly the same dictionary (see |
854 | deflateSetDictionary). For raw inflate, this function can be called at any | 868 | deflateSetDictionary). For raw inflate, this function can be called at any |
855 | time to set the dictionary. If the provided dictionary is smaller than the | 869 | time to set the dictionary. If the provided dictionary is smaller than the |
@@ -860,7 +874,7 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, | |||
860 | inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a | 874 | inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a |
861 | parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is | 875 | parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is |
862 | inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the | 876 | inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the |
863 | expected one (incorrect adler32 value). inflateSetDictionary does not | 877 | expected one (incorrect Adler-32 value). inflateSetDictionary does not |
864 | perform any decompression: this will be done by subsequent calls of | 878 | perform any decompression: this will be done by subsequent calls of |
865 | inflate(). | 879 | inflate(). |
866 | */ | 880 | */ |
@@ -918,7 +932,7 @@ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, | |||
918 | ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); | 932 | ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); |
919 | /* | 933 | /* |
920 | This function is equivalent to inflateEnd followed by inflateInit, | 934 | This function is equivalent to inflateEnd followed by inflateInit, |
921 | but does not free and reallocate all the internal decompression state. The | 935 | but does not free and reallocate the internal decompression state. The |
922 | stream will keep attributes that may have been set by inflateInit2. | 936 | stream will keep attributes that may have been set by inflateInit2. |
923 | 937 | ||
924 | inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source | 938 | inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source |
@@ -930,7 +944,9 @@ ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, | |||
930 | /* | 944 | /* |
931 | This function is the same as inflateReset, but it also permits changing | 945 | This function is the same as inflateReset, but it also permits changing |
932 | the wrap and window size requests. The windowBits parameter is interpreted | 946 | the wrap and window size requests. The windowBits parameter is interpreted |
933 | the same as it is for inflateInit2. | 947 | the same as it is for inflateInit2. If the window size is changed, then the |
948 | memory allocated for the window is freed, and the window will be reallocated | ||
949 | by inflate() if needed. | ||
934 | 950 | ||
935 | inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source | 951 | inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source |
936 | stream state was inconsistent (such as zalloc or state being Z_NULL), or if | 952 | stream state was inconsistent (such as zalloc or state being Z_NULL), or if |
@@ -982,7 +998,7 @@ ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); | |||
982 | location in the input stream can be determined from avail_in and data_type | 998 | location in the input stream can be determined from avail_in and data_type |
983 | as noted in the description for the Z_BLOCK flush parameter for inflate. | 999 | as noted in the description for the Z_BLOCK flush parameter for inflate. |
984 | 1000 | ||
985 | inflateMark returns the value noted above or -65536 if the provided | 1001 | inflateMark returns the value noted above, or -65536 if the provided |
986 | source stream state was inconsistent. | 1002 | source stream state was inconsistent. |
987 | */ | 1003 | */ |
988 | 1004 | ||
@@ -1074,9 +1090,9 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, | |||
1074 | This routine would normally be used in a utility that reads zip or gzip | 1090 | This routine would normally be used in a utility that reads zip or gzip |
1075 | files and writes out uncompressed files. The utility would decode the | 1091 | files and writes out uncompressed files. The utility would decode the |
1076 | header and process the trailer on its own, hence this routine expects only | 1092 | header and process the trailer on its own, hence this routine expects only |
1077 | the raw deflate stream to decompress. This is different from the normal | 1093 | the raw deflate stream to decompress. This is different from the default |
1078 | behavior of inflate(), which expects either a zlib or gzip header and | 1094 | behavior of inflate(), which expects a zlib header and trailer around the |
1079 | trailer around the deflate stream. | 1095 | deflate stream. |
1080 | 1096 | ||
1081 | inflateBack() uses two subroutines supplied by the caller that are then | 1097 | inflateBack() uses two subroutines supplied by the caller that are then |
1082 | called by inflateBack() for input and output. inflateBack() calls those | 1098 | called by inflateBack() for input and output. inflateBack() calls those |
@@ -1085,12 +1101,12 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, | |||
1085 | parameters and return types are defined above in the in_func and out_func | 1101 | parameters and return types are defined above in the in_func and out_func |
1086 | typedefs. inflateBack() will call in(in_desc, &buf) which should return the | 1102 | typedefs. inflateBack() will call in(in_desc, &buf) which should return the |
1087 | number of bytes of provided input, and a pointer to that input in buf. If | 1103 | number of bytes of provided input, and a pointer to that input in buf. If |
1088 | there is no input available, in() must return zero--buf is ignored in that | 1104 | there is no input available, in() must return zero -- buf is ignored in that |
1089 | case--and inflateBack() will return a buffer error. inflateBack() will call | 1105 | case -- and inflateBack() will return a buffer error. inflateBack() will |
1090 | out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() | 1106 | call out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. |
1091 | should return zero on success, or non-zero on failure. If out() returns | 1107 | out() should return zero on success, or non-zero on failure. If out() |
1092 | non-zero, inflateBack() will return with an error. Neither in() nor out() | 1108 | returns non-zero, inflateBack() will return with an error. Neither in() nor |
1093 | are permitted to change the contents of the window provided to | 1109 | out() are permitted to change the contents of the window provided to |
1094 | inflateBackInit(), which is also the buffer that out() uses to write from. | 1110 | inflateBackInit(), which is also the buffer that out() uses to write from. |
1095 | The length written by out() will be at most the window size. Any non-zero | 1111 | The length written by out() will be at most the window size. Any non-zero |
1096 | amount of input may be provided by in(). | 1112 | amount of input may be provided by in(). |
@@ -1118,7 +1134,7 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, | |||
1118 | using strm->next_in which will be Z_NULL only if in() returned an error. If | 1134 | using strm->next_in which will be Z_NULL only if in() returned an error. If |
1119 | strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning | 1135 | strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning |
1120 | non-zero. (in() will always be called before out(), so strm->next_in is | 1136 | non-zero. (in() will always be called before out(), so strm->next_in is |
1121 | assured to be defined if out() returns non-zero.) Note that inflateBack() | 1137 | assured to be defined if out() returns non-zero.) Note that inflateBack() |
1122 | cannot return Z_OK. | 1138 | cannot return Z_OK. |
1123 | */ | 1139 | */ |
1124 | 1140 | ||
@@ -1598,7 +1614,7 @@ ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); | |||
1598 | return the updated checksum. If buf is Z_NULL, this function returns the | 1614 | return the updated checksum. If buf is Z_NULL, this function returns the |
1599 | required initial value for the checksum. | 1615 | required initial value for the checksum. |
1600 | 1616 | ||
1601 | An Adler-32 checksum is almost as reliable as a CRC32 but can be computed | 1617 | An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed |
1602 | much faster. | 1618 | much faster. |
1603 | 1619 | ||
1604 | Usage example: | 1620 | Usage example: |