summaryrefslogtreecommitdiff
path: root/zlib/zlib.h
diff options
context:
space:
mode:
Diffstat (limited to 'zlib/zlib.h')
-rw-r--r--zlib/zlib.h1416
1 files changed, 640 insertions, 776 deletions
diff --git a/zlib/zlib.h b/zlib/zlib.h
index a36adb06c..52cb529f6 100644
--- a/zlib/zlib.h
+++ b/zlib/zlib.h
@@ -1,57 +1,35 @@
-/**
- * \file zlib.h
- * Interface of the 'zlib' general purpose compression library.
- * version 1.1.4, March 11th, 2002
- *
- * Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler
- *
- * This software is provided 'as-is', without any express or implied
- * warranty. In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- * claim that you wrote the original software. If you use this software
- * in a product, an acknowledgment in the product documentation would be
- * appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- * misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- *
- * Jean-loup Gailly Mark Adler
- * jloup@gzip.org madler@alumni.caltech.edu
- *
- *
- * The data format used by the zlib library is described by RFCs (Request for
- * Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
- * (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
- *
- * The 'zlib' compression library provides in-memory compression and
- * decompression functions, including integrity checks of the uncompressed
- * data. This version of the library supports only one compression method
- * (deflation) but other algorithms will be added later and will have the same
- * stream interface.
- *
- * Compression can be done in a single step if the buffers are large
- * enough (for example if an input file is mmap'ed), or can be done by
- * repeated calls of the compression function. In the latter case, the
- * application must provide more input and/or consume the output
- * (providing more output space) before each call.
- *
- * The library also supports reading and writing files in gzip (.gz) format
- * with an interface similar to that of stdio.
- *
- * The library does not install any signal handler. The decoder checks
- * the consistency of the compressed data, so the library should never
- * crash even in case of corrupted input.
- */
+/* zlib.h -- interface of the 'zlib' general purpose compression library
+ version 1.1.4, March 11th, 2002
+
+ Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+ Jean-loup Gailly Mark Adler
+ jloup@gzip.org madler@alumni.caltech.edu
+
+
+ The data format used by the zlib library is described by RFCs (Request for
+ Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
+ (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
+*/
#ifndef _ZLIB_H
#define _ZLIB_H
-/*@-declundef -fcnuse @*/
#include "zconf.h"
@@ -61,67 +39,86 @@ extern "C" {
#define ZLIB_VERSION "1.1.4"
-typedef /*@only@*/ voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size))
- /*@*/;
-typedef void (*free_func) OF((voidpf opaque, /*@only@*/ voidpf address))
- /*@*/;
+/*
+ The 'zlib' compression library provides in-memory compression and
+ decompression functions, including integrity checks of the uncompressed
+ data. This version of the library supports only one compression method
+ (deflation) but other algorithms will be added later and will have the same
+ stream interface.
+
+ Compression can be done in a single step if the buffers are large
+ enough (for example if an input file is mmap'ed), or can be done by
+ repeated calls of the compression function. In the latter case, the
+ application must provide more input and/or consume the output
+ (providing more output space) before each call.
+
+ The library also supports reading and writing files in gzip (.gz) format
+ with an interface similar to that of stdio.
+
+ The library does not install any signal handler. The decoder checks
+ the consistency of the compressed data, so the library should never
+ crash even in case of corrupted input.
+*/
+
+typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
+typedef void (*free_func) OF((voidpf opaque, voidpf address));
struct internal_state;
-/**
- * The application must update next_in and avail_in when avail_in has
- * dropped to zero. It must update next_out and avail_out when avail_out
- * has dropped to zero. The application must initialize zalloc, zfree and
- * opaque before calling the init function. All other fields are set by the
- * compression library and must not be updated by the application.
- *
- * The opaque value provided by the application will be passed as the first
- * parameter for calls of zalloc and zfree. This can be useful for custom
- * memory management. The compression library attaches no meaning to the
- * opaque value.
- *
- * zalloc must return Z_NULL if there is not enough memory for the object.
- * If zlib is used in a multi-threaded application, zalloc and zfree must be
- * thread safe.
- *
- * On 16-bit systems, the functions zalloc and zfree must be able to allocate
- * exactly 65536 bytes, but will not be required to allocate more than this
- * if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
- * pointers returned by zalloc for objects of exactly 65536 bytes *must*
- * have their offset normalized to zero. The default allocation function
- * provided by this library ensures this (see zutil.c). To reduce memory
- * requirements and avoid any allocation of 64K objects, at the expense of
- * compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
- *
- * The fields total_in and total_out can be used for statistics or
- * progress reports. After compression, total_in holds the total size of
- * the uncompressed data and may be saved for use in the decompressor
- * (particularly if the decompressor wants to decompress everything in
- * a single step).
- */
typedef struct z_stream_s {
- Bytef *next_in; /*!< next input byte */
- uInt avail_in; /*!< number of bytes available at next_in */
- uLong total_in; /*!< total nb of input bytes read so far */
+ Bytef *next_in; /* next input byte */
+ uInt avail_in; /* number of bytes available at next_in */
+ uLong total_in; /* total nb of input bytes read so far */
- Bytef *next_out; /*!< next output byte should be put there */
- uInt avail_out; /*!< remaining free space at next_out */
- uLong total_out; /*!< total nb of bytes output so far */
+ Bytef *next_out; /* next output byte should be put there */
+ uInt avail_out; /* remaining free space at next_out */
+ uLong total_out; /* total nb of bytes output so far */
-/*@observer@*/ /*@null@*/
- const char *msg; /*!< last error message, NULL if no error */
- struct internal_state FAR *state; /*!< not visible by applications */
+ char *msg; /* last error message, NULL if no error */
+ struct internal_state FAR *state; /* not visible by applications */
- alloc_func zalloc; /*!< used to allocate the internal state */
- free_func zfree; /*!< used to free the internal state */
- voidpf opaque; /*!< private data object passed to zalloc and zfree */
+ alloc_func zalloc; /* used to allocate the internal state */
+ free_func zfree; /* used to free the internal state */
+ voidpf opaque; /* private data object passed to zalloc and zfree */
- int data_type; /*!< best guess about the data type: ascii or binary */
- uLong adler; /*!< adler32 value of the uncompressed data */
- uLong crc; /*!< crc32 as updated during decompression */
+ int data_type; /* best guess about the data type: ascii or binary */
+ uLong adler; /* adler32 value of the uncompressed data */
+ uLong reserved; /* reserved for future use */
} z_stream;
-typedef /*@abstract@*/ z_stream FAR *z_streamp;
+typedef z_stream FAR *z_streamp;
+
+/*
+ The application must update next_in and avail_in when avail_in has
+ dropped to zero. It must update next_out and avail_out when avail_out
+ has dropped to zero. The application must initialize zalloc, zfree and
+ opaque before calling the init function. All other fields are set by the
+ compression library and must not be updated by the application.
+
+ The opaque value provided by the application will be passed as the first
+ parameter for calls of zalloc and zfree. This can be useful for custom
+ memory management. The compression library attaches no meaning to the
+ opaque value.
+
+ zalloc must return Z_NULL if there is not enough memory for the object.
+ If zlib is used in a multi-threaded application, zalloc and zfree must be
+ thread safe.
+
+ On 16-bit systems, the functions zalloc and zfree must be able to allocate
+ exactly 65536 bytes, but will not be required to allocate more than this
+ if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
+ pointers returned by zalloc for objects of exactly 65536 bytes *must*
+ have their offset normalized to zero. The default allocation function
+ provided by this library ensures this (see zutil.c). To reduce memory
+ requirements and avoid any allocation of 64K objects, at the expense of
+ compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
+
+ The fields total_in and total_out can be used for statistics or
+ progress reports. After compression, total_in holds the total size of
+ the uncompressed data and may be saved for use in the decompressor
+ (particularly if the decompressor wants to decompress everything in
+ a single step).
+*/
/* constants */
@@ -164,24 +161,23 @@ typedef /*@abstract@*/ z_stream FAR *z_streamp;
#define Z_DEFLATED 8
/* The deflate compression method (the only one supported in this version) */
-#define Z_NULL NULL /* for initializing zalloc, zfree, opaque */
+#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
#define zlib_version zlibVersion()
/* for compatibility with versions < 1.0.2 */
/* basic functions */
-/**
- * The application can compare zlibVersion and ZLIB_VERSION for consistency.
- * If the first character differs, the library code actually used is
- * not compatible with the zlib.h header file used by the application.
- * This check is automatically made by deflateInit and inflateInit.
+ZEXTERN const char * ZEXPORT zlibVersion OF((void));
+/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
+ If the first character differs, the library code actually used is
+ not compatible with the zlib.h header file used by the application.
+ This check is automatically made by deflateInit and inflateInit.
*/
-/*@observer@*/
-ZEXTERN const char * ZEXPORT zlibVersion OF((void))
- /*@*/;
/*
+ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
+
Initializes the internal stream state for compression. The fields
zalloc, zfree and opaque must be initialized before by the caller.
If zalloc and zfree are set to Z_NULL, deflateInit updates them to
@@ -199,104 +195,104 @@ ZEXTERN const char * ZEXPORT zlibVersion OF((void))
with the version assumed by the caller (ZLIB_VERSION).
msg is set to null if there is no error message. deflateInit does not
perform any compression: this will be done by deflate().
+*/
-ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
+
+ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
+/*
+ deflate compresses as much data as possible, and stops when the input
+ buffer becomes empty or the output buffer becomes full. It may introduce some
+ output latency (reading input without producing any output) except when
+ forced to flush.
+
+ The detailed semantics are as follows. deflate performs one or both of the
+ following actions:
+
+ - Compress more input starting at next_in and update next_in and avail_in
+ accordingly. If not all input can be processed (because there is not
+ enough room in the output buffer), next_in and avail_in are updated and
+ processing will resume at this point for the next call of deflate().
+
+ - Provide more output starting at next_out and update next_out and avail_out
+ accordingly. This action is forced if the parameter flush is non zero.
+ Forcing flush frequently degrades the compression ratio, so this parameter
+ should be set only when necessary (in interactive applications).
+ Some output may be provided even if flush is not set.
+
+ Before the call of deflate(), the application should ensure that at least
+ one of the actions is possible, by providing more input and/or consuming
+ more output, and updating avail_in or avail_out accordingly; avail_out
+ should never be zero before the call. The application can consume the
+ compressed output when it wants, for example when the output buffer is full
+ (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
+ and with zero avail_out, it must be called again after making room in the
+ output buffer because there might be more output pending.
+
+ If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
+ flushed to the output buffer and the output is aligned on a byte boundary, so
+ that the decompressor can get all input data available so far. (In particular
+ avail_in is zero after the call if enough output space has been provided
+ before the call.) Flushing may degrade compression for some compression
+ algorithms and so it should be used only when necessary.
+
+ If flush is set to Z_FULL_FLUSH, all output is flushed as with
+ Z_SYNC_FLUSH, and the compression state is reset so that decompression can
+ restart from this point if previous compressed data has been damaged or if
+ random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
+ the compression.
+
+ If deflate returns with avail_out == 0, this function must be called again
+ with the same value of the flush parameter and more output space (updated
+ avail_out), until the flush is complete (deflate returns with non-zero
+ avail_out).
+
+ If the parameter flush is set to Z_FINISH, pending input is processed,
+ pending output is flushed and deflate returns with Z_STREAM_END if there
+ was enough output space; if deflate returns with Z_OK, this function must be
+ called again with Z_FINISH and more output space (updated avail_out) but no
+ more input data, until it returns with Z_STREAM_END or an error. After
+ deflate has returned Z_STREAM_END, the only possible operations on the
+ stream are deflateReset or deflateEnd.
+
+ Z_FINISH can be used immediately after deflateInit if all the compression
+ is to be done in a single step. In this case, avail_out must be at least
+ 0.1% larger than avail_in plus 12 bytes. If deflate does not return
+ Z_STREAM_END, then it must be called again as described above.
+
+ deflate() sets strm->adler to the adler32 checksum of all input read
+ so far (that is, total_in bytes).
+
+ deflate() may update data_type if it can make a good guess about
+ the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
+ binary. This field is only for information purposes and does not affect
+ the compression algorithm in any manner.
+
+ deflate() returns Z_OK if some progress has been made (more input
+ processed or more output produced), Z_STREAM_END if all input has been
+ consumed and all output has been produced (only when flush is set to
+ Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
+ if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
+ (for example avail_in or avail_out was zero).
*/
-/**
- * deflate compresses as much data as possible, and stops when the input
- * buffer becomes empty or the output buffer becomes full. It may introduce some
- * output latency (reading input without producing any output) except when
- * forced to flush.
- *
- * The detailed semantics are as follows. deflate performs one or both of the
- * following actions:
- *
- * - Compress more input starting at next_in and update next_in and avail_in
- * accordingly. If not all input can be processed (because there is not
- * enough room in the output buffer), next_in and avail_in are updated and
- * processing will resume at this point for the next call of deflate().
- *
- * - Provide more output starting at next_out and update next_out and avail_out
- * accordingly. This action is forced if the parameter flush is non zero.
- * Forcing flush frequently degrades the compression ratio, so this parameter
- * should be set only when necessary (in interactive applications).
- * Some output may be provided even if flush is not set.
- *
- * Before the call of deflate(), the application should ensure that at least
- * one of the actions is possible, by providing more input and/or consuming
- * more output, and updating avail_in or avail_out accordingly; avail_out
- * should never be zero before the call. The application can consume the
- * compressed output when it wants, for example when the output buffer is full
- * (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
- * and with zero avail_out, it must be called again after making room in the
- * output buffer because there might be more output pending.
- *
- * If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
- * flushed to the output buffer and the output is aligned on a byte boundary, so
- * that the decompressor can get all input data available so far. (In particular
- * avail_in is zero after the call if enough output space has been provided
- * before the call.) Flushing may degrade compression for some compression
- * algorithms and so it should be used only when necessary.
- *
- * If flush is set to Z_FULL_FLUSH, all output is flushed as with
- * Z_SYNC_FLUSH, and the compression state is reset so that decompression can
- * restart from this point if previous compressed data has been damaged or if
- * random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
- * the compression.
- *
- * If deflate returns with avail_out == 0, this function must be called again
- * with the same value of the flush parameter and more output space (updated
- * avail_out), until the flush is complete (deflate returns with non-zero
- * avail_out).
- *
- * If the parameter flush is set to Z_FINISH, pending input is processed,
- * pending output is flushed and deflate returns with Z_STREAM_END if there
- * was enough output space; if deflate returns with Z_OK, this function must be
- * called again with Z_FINISH and more output space (updated avail_out) but no
- * more input data, until it returns with Z_STREAM_END or an error. After
- * deflate has returned Z_STREAM_END, the only possible operations on the
- * stream are deflateReset or deflateEnd.
- *
- * Z_FINISH can be used immediately after deflateInit if all the compression
- * is to be done in a single step. In this case, avail_out must be at least
- * 0.1% larger than avail_in plus 12 bytes. If deflate does not return
- * Z_STREAM_END, then it must be called again as described above.
- *
- * deflate() sets strm->adler to the adler32 checksum of all input read
- * so far (that is, total_in bytes).
- *
- * deflate() may update data_type if it can make a good guess about
- * the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
- * binary. This field is only for information purposes and does not affect
- * the compression algorithm in any manner.
- *
- * deflate() returns Z_OK if some progress has been made (more input
- * processed or more output produced), Z_STREAM_END if all input has been
- * consumed and all output has been produced (only when flush is set to
- * Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
- * if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
- * (for example avail_in or avail_out was zero).
- */
-ZEXTERN int ZEXPORT deflate OF((/*@dependent@*/ /*@null@*/ z_streamp strm, int flush))
- /*@modifies strm @*/;
-
-
-/**
- * All dynamically allocated data structures for this stream are freed.
- * This function discards any unprocessed input and does not flush any
- * pending output.
- *
- * deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
- * stream state was inconsistent, Z_DATA_ERROR if the stream was freed
- * prematurely (some input or output was discarded). In the error case,
- * msg may be set but then points to a static string (which must not be
- * deallocated).
+
+ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
+/*
+ All dynamically allocated data structures for this stream are freed.
+ This function discards any unprocessed input and does not flush any
+ pending output.
+
+ deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
+ stream state was inconsistent, Z_DATA_ERROR if the stream was freed
+ prematurely (some input or output was discarded). In the error case,
+ msg may be set but then points to a static string (which must not be
+ deallocated).
*/
-ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm))
- /*@modifies strm @*/;
+
/*
+ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
+
Initializes the internal stream state for decompression. The fields
next_in, avail_in, zalloc, zfree and opaque must be initialized before by
the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
@@ -312,91 +308,88 @@ ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm))
message. inflateInit does not perform any decompression apart from reading
the zlib header if present: this will be done by inflate(). (So next_in and
avail_in may be modified, but next_out and avail_out are unchanged.)
+*/
-ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
+
+ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
+/*
+ inflate decompresses as much data as possible, and stops when the input
+ buffer becomes empty or the output buffer becomes full. It may some
+ introduce some output latency (reading input without producing any output)
+ except when forced to flush.
+
+ The detailed semantics are as follows. inflate performs one or both of the
+ following actions:
+
+ - Decompress more input starting at next_in and update next_in and avail_in
+ accordingly. If not all input can be processed (because there is not
+ enough room in the output buffer), next_in is updated and processing
+ will resume at this point for the next call of inflate().
+
+ - Provide more output starting at next_out and update next_out and avail_out
+ accordingly. inflate() provides as much output as possible, until there
+ is no more input data or no more space in the output buffer (see below
+ about the flush parameter).
+
+ Before the call of inflate(), the application should ensure that at least
+ one of the actions is possible, by providing more input and/or consuming
+ more output, and updating the next_* and avail_* values accordingly.
+ The application can consume the uncompressed output when it wants, for
+ example when the output buffer is full (avail_out == 0), or after each
+ call of inflate(). If inflate returns Z_OK and with zero avail_out, it
+ must be called again after making room in the output buffer because there
+ might be more output pending.
+
+ If the parameter flush is set to Z_SYNC_FLUSH, inflate flushes as much
+ output as possible to the output buffer. The flushing behavior of inflate is
+ not specified for values of the flush parameter other than Z_SYNC_FLUSH
+ and Z_FINISH, but the current implementation actually flushes as much output
+ as possible anyway.
+
+ inflate() should normally be called until it returns Z_STREAM_END or an
+ error. However if all decompression is to be performed in a single step
+ (a single call of inflate), the parameter flush should be set to
+ Z_FINISH. In this case all pending input is processed and all pending
+ output is flushed; avail_out must be large enough to hold all the
+ uncompressed data. (The size of the uncompressed data may have been saved
+ by the compressor for this purpose.) The next operation on this stream must
+ be inflateEnd to deallocate the decompression state. The use of Z_FINISH
+ is never required, but can be used to inform inflate that a faster routine
+ may be used for the single inflate() call.
+
+ If a preset dictionary is needed at this point (see inflateSetDictionary
+ below), inflate sets strm-adler to the adler32 checksum of the
+ dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise
+ it sets strm->adler to the adler32 checksum of all output produced
+ so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or
+ an error code as described below. At the end of the stream, inflate()
+ checks that its computed adler32 checksum is equal to that saved by the
+ compressor and returns Z_STREAM_END only if the checksum is correct.
+
+ inflate() returns Z_OK if some progress has been made (more input processed
+ or more output produced), Z_STREAM_END if the end of the compressed data has
+ been reached and all uncompressed output has been produced, Z_NEED_DICT if a
+ preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
+ corrupted (input stream not conforming to the zlib format or incorrect
+ adler32 checksum), Z_STREAM_ERROR if the stream structure was inconsistent
+ (for example if next_in or next_out was NULL), Z_MEM_ERROR if there was not
+ enough memory, Z_BUF_ERROR if no progress is possible or if there was not
+ enough room in the output buffer when Z_FINISH is used. In the Z_DATA_ERROR
+ case, the application may then call inflateSync to look for a good
+ compression block.
*/
-/**
- * inflate decompresses as much data as possible, and stops when the input
- * buffer becomes empty or the output buffer becomes full. It may some
- * introduce some output latency (reading input without producing any output)
- * except when forced to flush.
- *
- * The detailed semantics are as follows. inflate performs one or both of the
- * following actions:
- *
- * - Decompress more input starting at next_in and update next_in and avail_in
- * accordingly. If not all input can be processed (because there is not
- * enough room in the output buffer), next_in is updated and processing
- * will resume at this point for the next call of inflate().
- *
- * - Provide more output starting at next_out and update next_out and avail_out
- * accordingly. inflate() provides as much output as possible, until there
- * is no more input data or no more space in the output buffer (see below
- * about the flush parameter).
- *
- * Before the call of inflate(), the application should ensure that at least
- * one of the actions is possible, by providing more input and/or consuming
- * more output, and updating the next_* and avail_* values accordingly.
- * The application can consume the uncompressed output when it wants, for
- * example when the output buffer is full (avail_out == 0), or after each
- * call of inflate(). If inflate returns Z_OK and with zero avail_out, it
- * must be called again after making room in the output buffer because there
- * might be more output pending.
- *
- * If the parameter flush is set to Z_SYNC_FLUSH, inflate flushes as much
- * output as possible to the output buffer. The flushing behavior of inflate is
- * not specified for values of the flush parameter other than Z_SYNC_FLUSH
- * and Z_FINISH, but the current implementation actually flushes as much output
- * as possible anyway.
- *
- * inflate() should normally be called until it returns Z_STREAM_END or an
- * error. However if all decompression is to be performed in a single step
- * (a single call of inflate), the parameter flush should be set to
- * Z_FINISH. In this case all pending input is processed and all pending
- * output is flushed; avail_out must be large enough to hold all the
- * uncompressed data. (The size of the uncompressed data may have been saved
- * by the compressor for this purpose.) The next operation on this stream must
- * be inflateEnd to deallocate the decompression state. The use of Z_FINISH
- * is never required, but can be used to inform inflate that a faster routine
- * may be used for the single inflate() call.
- *
- * If a preset dictionary is needed at this point (see inflateSetDictionary
- * below), inflate sets strm-adler to the adler32 checksum of the
- * dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise
- * it sets strm->adler to the adler32 checksum of all output produced
- * so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or
- * an error code as described below. At the end of the stream, inflate()
- * checks that its computed adler32 checksum is equal to that saved by the
- * compressor and returns Z_STREAM_END only if the checksum is correct.
- *
- * inflate() returns Z_OK if some progress has been made (more input processed
- * or more output produced), Z_STREAM_END if the end of the compressed data has
- * been reached and all uncompressed output has been produced, Z_NEED_DICT if a
- * preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
- * corrupted (input stream not conforming to the zlib format or incorrect
- * adler32 checksum), Z_STREAM_ERROR if the stream structure was inconsistent
- * (for example if next_in or next_out was NULL), Z_MEM_ERROR if there was not
- * enough memory, Z_BUF_ERROR if no progress is possible or if there was not
- * enough room in the output buffer when Z_FINISH is used. In the Z_DATA_ERROR
- * case, the application may then call inflateSync to look for a good
- * compression block.
+ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
+/*
+ All dynamically allocated data structures for this stream are freed.
+ This function discards any unprocessed input and does not flush any
+ pending output.
+
+ inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
+ was inconsistent. In the error case, msg may be set but then points to a
+ static string (which must not be deallocated).
*/
-ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush))
- /*@modifies strm @*/;
-
-/**
- * All dynamically allocated data structures for this stream are freed.
- * This function discards any unprocessed input and does not flush any
- * pending output.
- *
- * inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
- * was inconsistent. In the error case, msg may be set but then points to a
- * static string (which must not be deallocated).
- */
-ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm))
- /*@modifies strm @*/;
/* Advanced functions */
@@ -405,6 +398,13 @@ ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm))
*/
/*
+ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
+ int level,
+ int method,
+ int windowBits,
+ int memLevel,
+ int strategy));
+
This is another version of deflateInit with more compression options. The
fields next_in, zalloc, zfree and opaque must be initialized before by
the caller.
@@ -439,107 +439,98 @@ ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm))
memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
method). msg is set to null if there is no error message. deflateInit2 does
not perform any compression: this will be done by deflate().
-
-ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
- int level,
- int method,
- int windowBits,
- int memLevel,
- int strategy));
-
*/
-/**
- * Initializes the compression dictionary from the given byte sequence
- * without producing any compressed output. This function must be called
- * immediately after deflateInit, deflateInit2 or deflateReset, before any
- * call of deflate. The compressor and decompressor must use exactly the same
- * dictionary (see inflateSetDictionary).
- *
- * The dictionary should consist of strings (byte sequences) that are likely
- * to be encountered later in the data to be compressed, with the most commonly
- * used strings preferably put towards the end of the dictionary. Using a
- * dictionary is most useful when the data to be compressed is short and can be
- * predicted with good accuracy; the data can then be compressed better than
- * with the default empty dictionary.
- *
- * Depending on the size of the compression data structures selected by
- * deflateInit or deflateInit2, a part of the dictionary may in effect be
- * discarded, for example if the dictionary is larger than the window size in
- * deflate or deflate2. Thus the strings most likely to be useful should be
- * put at the end of the dictionary, not at the front.
- *
- * Upon return of this function, strm->adler is set to the Adler32 value
- * of the dictionary; the decompressor may later use this value to determine
- * which dictionary has been used by the compressor. (The Adler32 value
- * applies to the whole dictionary even if only a subset of the dictionary is
- * actually used by the compressor.)
- *
- * deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
- * parameter is invalid (such as NULL dictionary) or the stream state is
- * inconsistent (for example if deflate has already been called for this stream
- * or if the compression method is bsort). deflateSetDictionary does not
- * perform any compression: this will be done by deflate().
- */
ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
const Bytef *dictionary,
- uInt dictLength))
- /*@modifies strm @*/;
-
-/**
- * Sets the destination stream as a complete copy of the source stream.
- *
- * This function can be useful when several compression strategies will be
- * tried, for example when there are several ways of pre-processing the input
- * data with a filter. The streams that will be discarded should then be freed
- * by calling deflateEnd. Note that deflateCopy duplicates the internal
- * compression state which can be quite large, so this strategy is slow and
- * can consume lots of memory.
- *
- * deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
- * enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
- * (such as zalloc being NULL). msg is left unchanged in both source and
- * destination.
- */
-ZEXTERN int ZEXPORT deflateCopy OF((/*@dependent@*/ z_streamp dest,
- z_streamp source))
- /*@modifies dest, source @*/;
-
-/**
- * This function is equivalent to deflateEnd followed by deflateInit,
- * but does not free and reallocate all the internal compression state.
- * The stream will keep the same compression level and any other attributes
- * that may have been set by deflateInit2.
- *
- * deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
- * stream state was inconsistent (such as zalloc or state being NULL).
- */
-ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm))
- /*@modifies strm @*/;
-
-/**
- * Dynamically update the compression level and compression strategy. The
- * interpretation of level and strategy is as in deflateInit2. This can be
- * used to switch between compression and straight copy of the input data, or
- * to switch to a different kind of input data requiring a different
- * strategy. If the compression level is changed, the input available so far
- * is compressed with the old level (and may be flushed); the new level will
- * take effect only at the next call of deflate().
-
- * Before the call of deflateParams, the stream state must be set as for
- * a call of deflate(), since the currently available input may have to
- * be compressed and flushed. In particular, strm->avail_out must be non-zero.
-
- * deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
- * stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
- * if strm->avail_out was zero.
- */
-ZEXTERN int ZEXPORT deflateParams OF((/*@dependent@*/ /*@null@*/ z_streamp strm,
+ uInt dictLength));
+/*
+ Initializes the compression dictionary from the given byte sequence
+ without producing any compressed output. This function must be called
+ immediately after deflateInit, deflateInit2 or deflateReset, before any
+ call of deflate. The compressor and decompressor must use exactly the same
+ dictionary (see inflateSetDictionary).
+
+ The dictionary should consist of strings (byte sequences) that are likely
+ to be encountered later in the data to be compressed, with the most commonly
+ used strings preferably put towards the end of the dictionary. Using a
+ dictionary is most useful when the data to be compressed is short and can be
+ predicted with good accuracy; the data can then be compressed better than
+ with the default empty dictionary.
+
+ Depending on the size of the compression data structures selected by
+ deflateInit or deflateInit2, a part of the dictionary may in effect be
+ discarded, for example if the dictionary is larger than the window size in
+ deflate or deflate2. Thus the strings most likely to be useful should be
+ put at the end of the dictionary, not at the front.
+
+ Upon return of this function, strm->adler is set to the Adler32 value
+ of the dictionary; the decompressor may later use this value to determine
+ which dictionary has been used by the compressor. (The Adler32 value
+ applies to the whole dictionary even if only a subset of the dictionary is
+ actually used by the compressor.)
+
+ deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
+ parameter is invalid (such as NULL dictionary) or the stream state is
+ inconsistent (for example if deflate has already been called for this stream
+ or if the compression method is bsort). deflateSetDictionary does not
+ perform any compression: this will be done by deflate().
+*/
+
+ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
+ z_streamp source));
+/*
+ Sets the destination stream as a complete copy of the source stream.
+
+ This function can be useful when several compression strategies will be
+ tried, for example when there are several ways of pre-processing the input
+ data with a filter. The streams that will be discarded should then be freed
+ by calling deflateEnd. Note that deflateCopy duplicates the internal
+ compression state which can be quite large, so this strategy is slow and
+ can consume lots of memory.
+
+ deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
+ enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
+ (such as zalloc being NULL). msg is left unchanged in both source and
+ destination.
+*/
+
+ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
+/*
+ This function is equivalent to deflateEnd followed by deflateInit,
+ but does not free and reallocate all the internal compression state.
+ The stream will keep the same compression level and any other attributes
+ that may have been set by deflateInit2.
+
+ deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
+ stream state was inconsistent (such as zalloc or state being NULL).
+*/
+
+ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
int level,
- int strategy))
- /*@modifies strm @*/;
+ int strategy));
+/*
+ Dynamically update the compression level and compression strategy. The
+ interpretation of level and strategy is as in deflateInit2. This can be
+ used to switch between compression and straight copy of the input data, or
+ to switch to a different kind of input data requiring a different
+ strategy. If the compression level is changed, the input available so far
+ is compressed with the old level (and may be flushed); the new level will
+ take effect only at the next call of deflate().
+
+ Before the call of deflateParams, the stream state must be set as for
+ a call of deflate(), since the currently available input may have to
+ be compressed and flushed. In particular, strm->avail_out must be non-zero.
+
+ deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
+ stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
+ if strm->avail_out was zero.
+*/
/*
+ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
+ int windowBits));
+
This is another version of inflateInit with an extra parameter. The
fields next_in, avail_in, zalloc, zfree and opaque must be initialized
before by the caller.
@@ -557,58 +548,51 @@ ZEXTERN int ZEXPORT deflateParams OF((/*@dependent@*/ /*@null@*/ z_streamp strm,
does not perform any decompression apart from reading the zlib header if
present: this will be done by inflate(). (So next_in and avail_in may be
modified, but next_out and avail_out are unchanged.)
-
-ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
- int windowBits));
-
*/
-/**
- * Initializes the decompression dictionary from the given uncompressed byte
- * sequence. This function must be called immediately after a call of inflate
- * if this call returned Z_NEED_DICT. The dictionary chosen by the compressor
- * can be determined from the Adler32 value returned by this call of
- * inflate. The compressor and decompressor must use exactly the same
- * dictionary (see deflateSetDictionary).
- *
- * inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
- * parameter is invalid (such as NULL dictionary) or the stream state is
- * inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
- * expected one (incorrect Adler32 value). inflateSetDictionary does not
- * perform any decompression: this will be done by subsequent calls of
- * inflate().
- */
ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
const Bytef *dictionary,
- uInt dictLength))
- /*@modifies strm @*/;
-
-/**
- * Skips invalid compressed data until a full flush point (see above the
- * description of deflate with Z_FULL_FLUSH) can be found, or until all
- * available input is skipped. No output is provided.
- *
- * inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
- * if no more input was provided, Z_DATA_ERROR if no flush point has been found,
- * or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
- * case, the application may save the current current value of total_in which
- * indicates where valid compressed data was found. In the error case, the
- * application may repeatedly call inflateSync, providing more input each time,
- * until success or end of the input data.
- */
-ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm))
- /*@modifies strm @*/;
-
-/**
- * This function is equivalent to inflateEnd followed by inflateInit,
- * but does not free and reallocate all the internal decompression state.
- * The stream will keep attributes that may have been set by inflateInit2.
- *
- * inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
- * stream state was inconsistent (such as zalloc or state being NULL).
- */
-ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm))
- /*@modifies strm @*/;
+ uInt dictLength));
+/*
+ Initializes the decompression dictionary from the given uncompressed byte
+ sequence. This function must be called immediately after a call of inflate
+ if this call returned Z_NEED_DICT. The dictionary chosen by the compressor
+ can be determined from the Adler32 value returned by this call of
+ inflate. The compressor and decompressor must use exactly the same
+ dictionary (see deflateSetDictionary).
+
+ inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
+ parameter is invalid (such as NULL dictionary) or the stream state is
+ inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
+ expected one (incorrect Adler32 value). inflateSetDictionary does not
+ perform any decompression: this will be done by subsequent calls of
+ inflate().
+*/
+
+ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
+/*
+ Skips invalid compressed data until a full flush point (see above the
+ description of deflate with Z_FULL_FLUSH) can be found, or until all
+ available input is skipped. No output is provided.
+
+ inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
+ if no more input was provided, Z_DATA_ERROR if no flush point has been found,
+ or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
+ case, the application may save the current current value of total_in which
+ indicates where valid compressed data was found. In the error case, the
+ application may repeatedly call inflateSync, providing more input each time,
+ until success or end of the input data.
+*/
+
+ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
+/*
+ This function is equivalent to inflateEnd followed by inflateInit,
+ but does not free and reallocate all the internal decompression state.
+ The stream will keep attributes that may have been set by inflateInit2.
+
+ inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
+ stream state was inconsistent (such as zalloc or state being NULL).
+*/
/* utility functions */
@@ -621,384 +605,268 @@ ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm))
utility functions can easily be modified if you need special options.
*/
-/**
- * Compresses the source buffer into the destination buffer. sourceLen is
- * the byte length of the source buffer. Upon entry, destLen is the total
- * size of the destination buffer, which must be at least 0.1% larger than
- * sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the
- * compressed buffer.
- * This function can be used to compress a whole file at once if the
- * input file is mmap'ed.
- * compress returns Z_OK if success, Z_MEM_ERROR if there was not
- * enough memory, Z_BUF_ERROR if there was not enough room in the output
- * buffer.
- */
ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen))
- /*@modifies *dest, *destLen @*/;
-
-/**
- * Compresses the source buffer into the destination buffer. The level
- * parameter has the same meaning as in deflateInit. sourceLen is the byte
- * length of the source buffer. Upon entry, destLen is the total size of the
- * destination buffer, which must be at least 0.1% larger than sourceLen plus
- * 12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
- *
- * compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
- * memory, Z_BUF_ERROR if there was not enough room in the output buffer,
- * Z_STREAM_ERROR if the level parameter is invalid.
- */
+ const Bytef *source, uLong sourceLen));
+/*
+ Compresses the source buffer into the destination buffer. sourceLen is
+ the byte length of the source buffer. Upon entry, destLen is the total
+ size of the destination buffer, which must be at least 0.1% larger than
+ sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the
+ compressed buffer.
+ This function can be used to compress a whole file at once if the
+ input file is mmap'ed.
+ compress returns Z_OK if success, Z_MEM_ERROR if there was not
+ enough memory, Z_BUF_ERROR if there was not enough room in the output
+ buffer.
+*/
+
ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen,
const Bytef *source, uLong sourceLen,
- int level))
- /*@modifies *dest, *destLen @*/;
-
-/**
- * Decompresses the source buffer into the destination buffer. sourceLen is
- * the byte length of the source buffer. Upon entry, destLen is the total
- * size of the destination buffer, which must be large enough to hold the
- * entire uncompressed data. (The size of the uncompressed data must have
- * been saved previously by the compressor and transmitted to the decompressor
- * by some mechanism outside the scope of this compression library.)
- * Upon exit, destLen is the actual size of the compressed buffer.
- * This function can be used to decompress a whole file at once if the
- * input file is mmap'ed.
- *
- * uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
- * enough memory, Z_BUF_ERROR if there was not enough room in the output
- * buffer, or Z_DATA_ERROR if the input data was corrupted.
- */
+ int level));
+/*
+ Compresses the source buffer into the destination buffer. The level
+ parameter has the same meaning as in deflateInit. sourceLen is the byte
+ length of the source buffer. Upon entry, destLen is the total size of the
+ destination buffer, which must be at least 0.1% larger than sourceLen plus
+ 12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
+
+ compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+ memory, Z_BUF_ERROR if there was not enough room in the output buffer,
+ Z_STREAM_ERROR if the level parameter is invalid.
+*/
+
ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen))
- /*@modifies *dest, *destLen @*/;
+ const Bytef *source, uLong sourceLen));
+/*
+ Decompresses the source buffer into the destination buffer. sourceLen is
+ the byte length of the source buffer. Upon entry, destLen is the total
+ size of the destination buffer, which must be large enough to hold the
+ entire uncompressed data. (The size of the uncompressed data must have
+ been saved previously by the compressor and transmitted to the decompressor
+ by some mechanism outside the scope of this compression library.)
+ Upon exit, destLen is the actual size of the compressed buffer.
+ This function can be used to decompress a whole file at once if the
+ input file is mmap'ed.
+
+ uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
+ enough memory, Z_BUF_ERROR if there was not enough room in the output
+ buffer, or Z_DATA_ERROR if the input data was corrupted.
+*/
typedef voidp gzFile;
-/**
- * Opens a gzip (.gz) file for reading or writing. The mode parameter
- * is as in fopen ("rb" or "wb") but can also include a compression level
- * ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
- * Huffman only compression as in "wb1h". (See the description
- * of deflateInit2 for more information about the strategy parameter.)
- *
- * gzopen can be used to read a file which is not in gzip format; in this
- * case gzread will directly read from the file without decompression.
- *
- * gzopen returns NULL if the file could not be opened or if there was
- * insufficient memory to allocate the (de)compression state; errno
- * can be checked to distinguish the two cases (if errno is zero, the
- * zlib error is Z_MEM_ERROR).
- *
- * @param path file name
- * @param mode file open mode
- * @return compressed stream
- */
-/*@null@*/
-ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode))
- /*@globals fileSystem @*/
- /*@modifies fileSystem @*/;
-
-/**
- * gzdopen() associates a gzFile with the file descriptor fd. File
- * descriptors are obtained from calls like open, dup, creat, pipe or
- * fileno (in the file has been previously opened with fopen).
- * The mode parameter is as in gzopen.
- * The next call of gzclose on the returned gzFile will also close the
- * file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
- * descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
- * gzdopen returns NULL if there was insufficient memory to allocate
- * the (de)compression state.
- *
- * @param fd file descriptor
- * @param mode file open mode
- * @return compressed stream
- */
-/*@null@*/
-ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode))
- /*@globals fileSystem @*/
- /*@modifies fileSystem @*/;
-
-/**
- * Dynamically update the compression level or strategy. See the description
- * of deflateInit2 for the meaning of these parameters.
- * gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
- * opened for writing.
- *
- * @param file compressed stream
- * @param level
- * @param strategy
- * @return Z_OK on success
- */
-ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy))
- /*@globals fileSystem @*/
- /*@modifies file, fileSystem @*/;
-
-/**
- * Reads the given number of uncompressed bytes from the compressed file.
- * If the input file was not in gzip format, gzread copies the given number
- * of bytes into the buffer.
- * gzread returns the number of uncompressed bytes actually read (0 for
- * end of file, -1 for error).
- *
- * @param file compressed stream
- * @param buf
- * @param len
- * @return no. of bytes read, 0 on EOF, -1 on error
- */
-ZEXTERN int ZEXPORT gzread OF((gzFile file, /*@out@*/ voidp buf, unsigned len))
- /*@globals errno, fileSystem @*/
- /*@modifies file, *buf, errno, fileSystem @*/;
-
-/**
- * Writes the given number of uncompressed bytes into the compressed file.
- * gzwrite returns the number of uncompressed bytes actually written
- * (0 in case of error).
- *
- * @param file compressed stream
- * @param buf
- * @param len
- * @return no. of bytes written, 0 on error
- */
+ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
+/*
+ Opens a gzip (.gz) file for reading or writing. The mode parameter
+ is as in fopen ("rb" or "wb") but can also include a compression level
+ ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
+ Huffman only compression as in "wb1h". (See the description
+ of deflateInit2 for more information about the strategy parameter.)
+
+ gzopen can be used to read a file which is not in gzip format; in this
+ case gzread will directly read from the file without decompression.
+
+ gzopen returns NULL if the file could not be opened or if there was
+ insufficient memory to allocate the (de)compression state; errno
+ can be checked to distinguish the two cases (if errno is zero, the
+ zlib error is Z_MEM_ERROR). */
+
+ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
+/*
+ gzdopen() associates a gzFile with the file descriptor fd. File
+ descriptors are obtained from calls like open, dup, creat, pipe or
+ fileno (in the file has been previously opened with fopen).
+ The mode parameter is as in gzopen.
+ The next call of gzclose on the returned gzFile will also close the
+ file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
+ descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
+ gzdopen returns NULL if there was insufficient memory to allocate
+ the (de)compression state.
+*/
+
+ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
+/*
+ Dynamically update the compression level or strategy. See the description
+ of deflateInit2 for the meaning of these parameters.
+ gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
+ opened for writing.
+*/
+
+ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
+/*
+ Reads the given number of uncompressed bytes from the compressed file.
+ If the input file was not in gzip format, gzread copies the given number
+ of bytes into the buffer.
+ gzread returns the number of uncompressed bytes actually read (0 for
+ end of file, -1 for error). */
+
ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
- const voidp buf, unsigned len))
- /*@globals fileSystem @*/
- /*@modifies file, fileSystem @*/;
-
-/**
- * Converts, formats, and writes the args to the compressed file under
- * control of the format string, as in fprintf. gzprintf returns the number of
- * uncompressed bytes actually written (0 in case of error).
- *
- * @param file compressed stream
- * @param format
- * @return no. of bytes written, 0 on error
- */
-ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...))
- /*@globals fileSystem @*/
- /*@modifies file, fileSystem @*/;
-
-/**
- * Writes the given null-terminated string to the compressed file, excluding
- * the terminating null character.
- * gzputs returns the number of characters written, or -1 in case of error.
- *
- * @param file compressed stream
- * @param s
- * @return no. of bytes written, -1 on error
- */
-ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s))
- /*@globals fileSystem @*/
- /*@modifies file, fileSystem @*/;
-
-/**
- * Reads bytes from the compressed file until len-1 characters are read, or
- * a newline character is read and transferred to buf, or an end-of-file
- * condition is encountered. The string is then terminated with a null
- * character.
- * gzgets returns buf, or Z_NULL in case of error.
- *
- * @param file compressed stream
- * @param buf
- * @param len
- * @return buf, Z_NULL on error
- */
-/*@null@*/
-ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len))
- /*@globals fileSystem @*/
- /*@modifies file, buf, fileSystem @*/;
-
-/**
- * Writes c, converted to an unsigned char, into the compressed file.
- * gzputc returns the value that was written, or -1 in case of error.
- *
- * @param file compressed stream
- * @param c
- * @return -1 on error
- */
-ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c))
- /*@globals fileSystem @*/
- /*@modifies file, fileSystem @*/;
-
-/**
- * Reads one byte from the compressed file. gzgetc returns this byte
- * or -1 in case of end of file or error.
- *
- * @param file compressed stream
- * @return -1 on eof/error
- */
-ZEXTERN int ZEXPORT gzgetc OF((gzFile file))
- /*@globals fileSystem @*/
- /*@modifies file, fileSystem @*/;
-
-/**
- * Flushes all pending output into the compressed file. The parameter
- * flush is as in the deflate() function. The return value is the zlib
- * error number (see function gzerror below). gzflush returns Z_OK if
- * the flush parameter is Z_FINISH and all output could be flushed.
- * gzflush should be called only when strictly necessary because it can
- * degrade compression.
- *
- * @param file compressed stream
- * @return Z_OK on success
- */
-ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush))
- /*@globals fileSystem @*/
- /*@modifies file, fileSystem @*/;
-
-/**
- * Sets the starting position for the next gzread or gzwrite on the
- * given compressed file. The offset represents a number of bytes in the
- * uncompressed data stream. The whence parameter is defined as in lseek(2);
- * the value SEEK_END is not supported.
- * If the file is opened for reading, this function is emulated but can be
- * extremely slow. If the file is opened for writing, only forward seeks are
- * supported; gzseek then compresses a sequence of zeroes up to the new
- * starting position.
- *
- * gzseek returns the resulting offset location as measured in bytes from
- * the beginning of the uncompressed stream, or -1 in case of error, in
- * particular if the file is opened for writing and the new starting position
- * would be before the current position.
- *
- * @param file compressed stream
- * @param offset
- * @param whence
- * @return -1 on error
- */
+ const voidp buf, unsigned len));
+/*
+ Writes the given number of uncompressed bytes into the compressed file.
+ gzwrite returns the number of uncompressed bytes actually written
+ (0 in case of error).
+*/
+
+ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...));
+/*
+ Converts, formats, and writes the args to the compressed file under
+ control of the format string, as in fprintf. gzprintf returns the number of
+ uncompressed bytes actually written (0 in case of error).
+*/
+
+ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
+/*
+ Writes the given null-terminated string to the compressed file, excluding
+ the terminating null character.
+ gzputs returns the number of characters written, or -1 in case of error.
+*/
+
+ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
+/*
+ Reads bytes from the compressed file until len-1 characters are read, or
+ a newline character is read and transferred to buf, or an end-of-file
+ condition is encountered. The string is then terminated with a null
+ character.
+ gzgets returns buf, or Z_NULL in case of error.
+*/
+
+ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
+/*
+ Writes c, converted to an unsigned char, into the compressed file.
+ gzputc returns the value that was written, or -1 in case of error.
+*/
+
+ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
+/*
+ Reads one byte from the compressed file. gzgetc returns this byte
+ or -1 in case of end of file or error.
+*/
+
+ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
+/*
+ Flushes all pending output into the compressed file. The parameter
+ flush is as in the deflate() function. The return value is the zlib
+ error number (see function gzerror below). gzflush returns Z_OK if
+ the flush parameter is Z_FINISH and all output could be flushed.
+ gzflush should be called only when strictly necessary because it can
+ degrade compression.
+*/
+
ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
- z_off_t offset, int whence))
- /*@globals fileSystem @*/
- /*@modifies file, fileSystem @*/;
-
-/**
- * Rewinds the given file. This function is supported only for reading.
- *
- * gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
- *
- * @param file compressed stream
- * @return
- */
-ZEXTERN int ZEXPORT gzrewind OF((gzFile file))
- /*@globals fileSystem @*/
- /*@modifies file, fileSystem @*/;
-
-/**
- * Returns the starting position for the next gzread or gzwrite on the
- * given compressed file. This position represents a number of bytes in the
- * uncompressed data stream.
- *
- * gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
- *
- * @param file compressed stream
- * @return
- */
-ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file))
- /*@globals fileSystem @*/
- /*@modifies file, fileSystem @*/;
-
-/**
- * Returns 1 when EOF has previously been detected reading the given
- * input stream, otherwise zero.
- *
- * @param file compressed stream
- * @return
- */
-ZEXTERN int ZEXPORT gzeof OF((gzFile file))
- /*@*/;
-
-/**
- * Flushes all pending output if necessary, closes the compressed file
- * and deallocates all the (de)compression state. The return value is the zlib
- * error number (see function gzerror below).
- *
- * @param file compressed stream
- * @return
- */
-ZEXTERN int ZEXPORT gzclose OF((/*@only@*/ gzFile file))
- /*@globals fileSystem @*/
- /*@modifies file, fileSystem @*/;
-
-/**
- * Returns the error message for the last error which occurred on the
- * given compressed file. errnum is set to zlib error number. If an
- * error occurred in the file system and not in the compression library,
- * errnum is set to Z_ERRNO and the application may consult errno
- * to get the exact error code.
- *
- * @param file compressed stream
- * @param errnum
- * @return
- */
-/*@observer@*/
-ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum))
- /*@modifies *errnum @*/;
+ z_off_t offset, int whence));
+/*
+ Sets the starting position for the next gzread or gzwrite on the
+ given compressed file. The offset represents a number of bytes in the
+ uncompressed data stream. The whence parameter is defined as in lseek(2);
+ the value SEEK_END is not supported.
+ If the file is opened for reading, this function is emulated but can be
+ extremely slow. If the file is opened for writing, only forward seeks are
+ supported; gzseek then compresses a sequence of zeroes up to the new
+ starting position.
+
+ gzseek returns the resulting offset location as measured in bytes from
+ the beginning of the uncompressed stream, or -1 in case of error, in
+ particular if the file is opened for writing and the new starting position
+ would be before the current position.
+*/
+
+ZEXTERN int ZEXPORT gzrewind OF((gzFile file));
+/*
+ Rewinds the given file. This function is supported only for reading.
+
+ gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
+*/
+
+ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
+/*
+ Returns the starting position for the next gzread or gzwrite on the
+ given compressed file. This position represents a number of bytes in the
+ uncompressed data stream.
+
+ gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
+*/
+
+ZEXTERN int ZEXPORT gzeof OF((gzFile file));
+/*
+ Returns 1 when EOF has previously been detected reading the given
+ input stream, otherwise zero.
+*/
+
+ZEXTERN int ZEXPORT gzclose OF((gzFile file));
+/*
+ Flushes all pending output if necessary, closes the compressed file
+ and deallocates all the (de)compression state. The return value is the zlib
+ error number (see function gzerror below).
+*/
+
+ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
+/*
+ Returns the error message for the last error which occurred on the
+ given compressed file. errnum is set to zlib error number. If an
+ error occurred in the file system and not in the compression library,
+ errnum is set to Z_ERRNO and the application may consult errno
+ to get the exact error code.
+*/
/* checksum functions */
/*
- * These functions are not related to compression but are exported
- * anyway because they might be useful in applications using the
- * compression library.
- */
+ These functions are not related to compression but are exported
+ anyway because they might be useful in applications using the
+ compression library.
+*/
+
+ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
+
+/*
+ Update a running Adler-32 checksum with the bytes buf[0..len-1] and
+ return the updated checksum. If buf is NULL, this function returns
+ the required initial value for the checksum.
+ An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
+ much faster. Usage example:
-/**
- * Update a running Adler-32 checksum with the bytes buf[0..len-1] and
- * return the updated checksum. If buf is NULL, this function returns
- * the required initial value for the checksum.
- * An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
- * much faster. Usage example:
-\code
uLong adler = adler32(0L, Z_NULL, 0);
while (read_buffer(buffer, length) != EOF) {
adler = adler32(adler, buffer, length);
}
if (adler != original_adler) error();
-\endcode
- */
-ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len))
- /*@*/;
-
-/**
- * Update a running crc with the bytes buf[0..len-1] and return the updated
- * crc. If buf is NULL, this function returns the required initial value
- * for the crc. Pre- and post-conditioning (one's complement) is performed
- * within this function so it shouldn't be done by the application.
- * Usage example:
-\code
+*/
+
+ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
+/*
+ Update a running crc with the bytes buf[0..len-1] and return the updated
+ crc. If buf is NULL, this function returns the required initial value
+ for the crc. Pre- and post-conditioning (one's complement) is performed
+ within this function so it shouldn't be done by the application.
+ Usage example:
+
uLong crc = crc32(0L, Z_NULL, 0);
while (read_buffer(buffer, length) != EOF) {
crc = crc32(crc, buffer, length);
}
if (crc != original_crc) error();
-\endcode
- */
-ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len))
- /*@*/;
+*/
+
/* various hacks, don't look :) */
/* deflateInit and inflateInit are macros to allow checking the zlib version
* and the compiler's view of z_stream:
*/
-ZEXTERN int ZEXPORT deflateInit_ OF((/*@dependent@*/ /*@null@*/ z_streamp strm,
- int level,
- const char *version, int stream_size))
- /*@modifies strm @*/;
+ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
+ const char *version, int stream_size));
ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
- const char *version, int stream_size))
- /*@modifies strm @*/;
-ZEXTERN int ZEXPORT deflateInit2_ OF((/*@dependent@*/ /*@null@*/ z_streamp strm,
- int level, int method,
+ const char *version, int stream_size));
+ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method,
int windowBits, int memLevel,
int strategy, const char *version,
- int stream_size))
- /*@modifies strm @*/;
+ int stream_size));
ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
- const char *version, int stream_size))
- /*@modifies strm @*/;
+ const char *version, int stream_size));
#define deflateInit(strm, level) \
deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
#define inflateInit(strm) \
@@ -1010,20 +878,16 @@ ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
-/*@observer@*/
-ZEXTERN const char * ZEXPORT zError OF((int err))
- /*@*/;
-
-ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp z))
- /*@modifies z @*/;
+#if !defined(_Z_UTIL_H) && !defined(NO_DUMMY_DECL)
+ struct internal_state {int dummy;}; /* hack for buggy compilers */
+#endif
-/*@observer@*/
-ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void))
- /*@*/;
+ZEXTERN const char * ZEXPORT zError OF((int err));
+ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp z));
+ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void));
#ifdef __cplusplus
}
#endif
-/*@=declundef =fcnuse @*/
#endif /* _ZLIB_H */