summaryrefslogtreecommitdiff
path: root/doc/api-documentation/html/zlib.h-source.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/api-documentation/html/zlib.h-source.html')
-rw-r--r--doc/api-documentation/html/zlib.h-source.html908
1 files changed, 908 insertions, 0 deletions
diff --git a/doc/api-documentation/html/zlib.h-source.html b/doc/api-documentation/html/zlib.h-source.html
new file mode 100644
index 0000000..b436ad9
--- /dev/null
+++ b/doc/api-documentation/html/zlib.h-source.html
@@ -0,0 +1,908 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><meta name="robots" content="noindex">
+<title>zlib.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body bgcolor="#ffffff">
+<!-- Generated by Doxygen 1.1.5 on Thu May 24 19:50:26 2001 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
+<hr><h1>zlib.h</h1><div class="fragment"><pre>00001 <font class="comment">/* zlib.h -- interface of the 'zlib' general purpose compression library
+</font>00002 <font class="comment"> version 1.1.3, July 9th, 1998
+</font>00003 <font class="comment">
+</font>00004 <font class="comment"> Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler
+</font>00005 <font class="comment">
+</font>00006 <font class="comment"> This software is provided 'as-is', without any express or implied
+</font>00007 <font class="comment"> warranty. In no event will the authors be held liable for any damages
+</font>00008 <font class="comment"> arising from the use of this software.
+</font>00009 <font class="comment">
+</font>00010 <font class="comment"> Permission is granted to anyone to use this software for any purpose,
+</font>00011 <font class="comment"> including commercial applications, and to alter it and redistribute it
+</font>00012 <font class="comment"> freely, subject to the following restrictions:
+</font>00013 <font class="comment">
+</font>00014 <font class="comment"> 1. The origin of this software must not be misrepresented; you must not
+</font>00015 <font class="comment"> claim that you wrote the original software. If you use this software
+</font>00016 <font class="comment"> in a product, an acknowledgment in the product documentation would be
+</font>00017 <font class="comment"> appreciated but is not required.
+</font>00018 <font class="comment"> 2. Altered source versions must be plainly marked as such, and must not be
+</font>00019 <font class="comment"> misrepresented as being the original software.
+</font>00020 <font class="comment"> 3. This notice may not be removed or altered from any source distribution.
+</font>00021 <font class="comment">
+</font>00022 <font class="comment"> Jean-loup Gailly Mark Adler
+</font>00023 <font class="comment"> jloup@gzip.org madler@alumni.caltech.edu
+</font>00024 <font class="comment">
+</font>00025 <font class="comment">
+</font>00026 <font class="comment"> The data format used by the zlib library is described by RFCs (Request for
+</font>00027 <font class="comment"> Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
+</font>00028 <font class="comment"> (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
+</font>00029 <font class="comment">*/</font>
+00030
+00031 <font class="preprocessor">#ifndef _ZLIB_H
+</font>00032 <font class="preprocessor"></font><font class="preprocessor">#define _ZLIB_H
+</font>00033 <font class="preprocessor"></font>
+00034 <font class="preprocessor">#include "zconf.h"</font>
+00035
+00036 <font class="preprocessor">#ifdef __cplusplus
+</font>00037 <font class="preprocessor"></font><font class="keyword">extern</font> <font class="stringliteral">"C"</font> {
+00038 <font class="preprocessor">#endif
+</font>00039 <font class="preprocessor"></font>
+00040 <font class="preprocessor">#define ZLIB_VERSION "1.1.3"
+</font>00041 <font class="preprocessor"></font>
+00042 <font class="comment">/*
+</font>00043 <font class="comment"> The 'zlib' compression library provides in-memory compression and
+</font>00044 <font class="comment"> decompression functions, including integrity checks of the uncompressed
+</font>00045 <font class="comment"> data. This version of the library supports only one compression method
+</font>00046 <font class="comment"> (deflation) but other algorithms will be added later and will have the same
+</font>00047 <font class="comment"> stream interface.
+</font>00048 <font class="comment">
+</font>00049 <font class="comment"> Compression can be done in a single step if the buffers are large
+</font>00050 <font class="comment"> enough (for example if an input file is mmap'ed), or can be done by
+</font>00051 <font class="comment"> repeated calls of the compression function. In the latter case, the
+</font>00052 <font class="comment"> application must provide more input and/or consume the output
+</font>00053 <font class="comment"> (providing more output space) before each call.
+</font>00054 <font class="comment">
+</font>00055 <font class="comment"> The library also supports reading and writing files in gzip (.gz) format
+</font>00056 <font class="comment"> with an interface similar to that of stdio.
+</font>00057 <font class="comment">
+</font>00058 <font class="comment"> The library does not install any signal handler. The decoder checks
+</font>00059 <font class="comment"> the consistency of the compressed data, so the library should never
+</font>00060 <font class="comment"> crash even in case of corrupted input.
+</font>00061 <font class="comment">*/</font>
+00062
+00063 <font class="keyword">typedef</font> voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
+00064 <font class="keyword">typedef</font> void (*free_func) OF((voidpf opaque, voidpf address));
+00065
+00066 <font class="keyword">struct </font>internal_state;
+00067
+00068 <font class="keyword">typedef</font> <font class="keyword">struct </font>z_stream_s {
+00069 Bytef *next_in; <font class="comment">/* next input byte */</font>
+00070 uInt avail_in; <font class="comment">/* number of bytes available at next_in */</font>
+00071 uLong total_in; <font class="comment">/* total nb of input bytes read so far */</font>
+00072
+00073 Bytef *next_out; <font class="comment">/* next output byte should be put there */</font>
+00074 uInt avail_out; <font class="comment">/* remaining free space at next_out */</font>
+00075 uLong total_out; <font class="comment">/* total nb of bytes output so far */</font>
+00076
+00077 <font class="keywordtype">char</font> *msg; <font class="comment">/* last error message, NULL if no error */</font>
+00078 <font class="keyword">struct </font>internal_state FAR *state; <font class="comment">/* not visible by applications */</font>
+00079
+00080 alloc_func zalloc; <font class="comment">/* used to allocate the internal state */</font>
+00081 free_func zfree; <font class="comment">/* used to free the internal state */</font>
+00082 voidpf opaque; <font class="comment">/* private data object passed to zalloc and zfree */</font>
+00083
+00084 <font class="keywordtype">int</font> data_type; <font class="comment">/* best guess about the data type: ascii or binary */</font>
+00085 uLong adler; <font class="comment">/* adler32 value of the uncompressed data */</font>
+00086 uLong reserved; <font class="comment">/* reserved for future use */</font>
+00087 } z_stream;
+00088
+00089 <font class="keyword">typedef</font> z_stream FAR *z_streamp;
+00090
+00091 <font class="comment">/*
+</font>00092 <font class="comment"> The application must update next_in and avail_in when avail_in has
+</font>00093 <font class="comment"> dropped to zero. It must update next_out and avail_out when avail_out
+</font>00094 <font class="comment"> has dropped to zero. The application must initialize zalloc, zfree and
+</font>00095 <font class="comment"> opaque before calling the init function. All other fields are set by the
+</font>00096 <font class="comment"> compression library and must not be updated by the application.
+</font>00097 <font class="comment">
+</font>00098 <font class="comment"> The opaque value provided by the application will be passed as the first
+</font>00099 <font class="comment"> parameter for calls of zalloc and zfree. This can be useful for custom
+</font>00100 <font class="comment"> memory management. The compression library attaches no meaning to the
+</font>00101 <font class="comment"> opaque value.
+</font>00102 <font class="comment">
+</font>00103 <font class="comment"> zalloc must return Z_NULL if there is not enough memory for the object.
+</font>00104 <font class="comment"> If zlib is used in a multi-threaded application, zalloc and zfree must be
+</font>00105 <font class="comment"> thread safe.
+</font>00106 <font class="comment">
+</font>00107 <font class="comment"> On 16-bit systems, the functions zalloc and zfree must be able to allocate
+</font>00108 <font class="comment"> exactly 65536 bytes, but will not be required to allocate more than this
+</font>00109 <font class="comment"> if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
+</font>00110 <font class="comment"> pointers returned by zalloc for objects of exactly 65536 bytes *must*
+</font>00111 <font class="comment"> have their offset normalized to zero. The default allocation function
+</font>00112 <font class="comment"> provided by this library ensures this (see zutil.c). To reduce memory
+</font>00113 <font class="comment"> requirements and avoid any allocation of 64K objects, at the expense of
+</font>00114 <font class="comment"> compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
+</font>00115 <font class="comment">
+</font>00116 <font class="comment"> The fields total_in and total_out can be used for statistics or
+</font>00117 <font class="comment"> progress reports. After compression, total_in holds the total size of
+</font>00118 <font class="comment"> the uncompressed data and may be saved for use in the decompressor
+</font>00119 <font class="comment"> (particularly if the decompressor wants to decompress everything in
+</font>00120 <font class="comment"> a single step).
+</font>00121 <font class="comment">*/</font>
+00122
+00123 <font class="comment">/* constants */</font>
+00124
+00125 <font class="preprocessor">#define Z_NO_FLUSH 0
+</font>00126 <font class="preprocessor"></font><font class="preprocessor">#define Z_PARTIAL_FLUSH 1 </font><font class="comment">/* will be removed, use Z_SYNC_FLUSH instead */</font>
+00127 <font class="preprocessor">#define Z_SYNC_FLUSH 2
+</font>00128 <font class="preprocessor"></font><font class="preprocessor">#define Z_FULL_FLUSH 3
+</font>00129 <font class="preprocessor"></font><font class="preprocessor">#define Z_FINISH 4
+</font>00130 <font class="preprocessor"></font><font class="comment">/* Allowed flush values; see deflate() below for details */</font>
+00131
+00132 <font class="preprocessor">#define Z_OK 0
+</font>00133 <font class="preprocessor"></font><font class="preprocessor">#define Z_STREAM_END 1
+</font>00134 <font class="preprocessor"></font><font class="preprocessor">#define Z_NEED_DICT 2
+</font>00135 <font class="preprocessor"></font><font class="preprocessor">#define Z_ERRNO (-1)
+</font>00136 <font class="preprocessor"></font><font class="preprocessor">#define Z_STREAM_ERROR (-2)
+</font>00137 <font class="preprocessor"></font><font class="preprocessor">#define Z_DATA_ERROR (-3)
+</font>00138 <font class="preprocessor"></font><font class="preprocessor">#define Z_MEM_ERROR (-4)
+</font>00139 <font class="preprocessor"></font><font class="preprocessor">#define Z_BUF_ERROR (-5)
+</font>00140 <font class="preprocessor"></font><font class="preprocessor">#define Z_VERSION_ERROR (-6)
+</font>00141 <font class="preprocessor"></font><font class="comment">/* Return codes for the compression/decompression functions. Negative
+</font>00142 <font class="comment"> * values are errors, positive values are used for special but normal events.
+</font>00143 <font class="comment"> */</font>
+00144
+00145 <font class="preprocessor">#define Z_NO_COMPRESSION 0
+</font>00146 <font class="preprocessor"></font><font class="preprocessor">#define Z_BEST_SPEED 1
+</font>00147 <font class="preprocessor"></font><font class="preprocessor">#define Z_BEST_COMPRESSION 9
+</font>00148 <font class="preprocessor"></font><font class="preprocessor">#define Z_DEFAULT_COMPRESSION (-1)
+</font>00149 <font class="preprocessor"></font><font class="comment">/* compression levels */</font>
+00150
+00151 <font class="preprocessor">#define Z_FILTERED 1
+</font>00152 <font class="preprocessor"></font><font class="preprocessor">#define Z_HUFFMAN_ONLY 2
+</font>00153 <font class="preprocessor"></font><font class="preprocessor">#define Z_DEFAULT_STRATEGY 0
+</font>00154 <font class="preprocessor"></font><font class="comment">/* compression strategy; see deflateInit2() below for details */</font>
+00155
+00156 <font class="preprocessor">#define Z_BINARY 0
+</font>00157 <font class="preprocessor"></font><font class="preprocessor">#define Z_ASCII 1
+</font>00158 <font class="preprocessor"></font><font class="preprocessor">#define Z_UNKNOWN 2
+</font>00159 <font class="preprocessor"></font><font class="comment">/* Possible values of the data_type field */</font>
+00160
+00161 <font class="preprocessor">#define Z_DEFLATED 8
+</font>00162 <font class="preprocessor"></font><font class="comment">/* The deflate compression method (the only one supported in this version) */</font>
+00163
+00164 <font class="preprocessor">#define Z_NULL 0 </font><font class="comment">/* for initializing zalloc, zfree, opaque */</font>
+00165
+00166 <font class="preprocessor">#define zlib_version zlibVersion()
+</font>00167 <font class="preprocessor"></font><font class="comment">/* for compatibility with versions &lt; 1.0.2 */</font>
+00168
+00169 <font class="comment">/* basic functions */</font>
+00170
+00171 ZEXTERN <font class="keyword">const</font> <font class="keywordtype">char</font> * ZEXPORT zlibVersion OF((<font class="keywordtype">void</font>));
+00172 <font class="comment">/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
+</font>00173 <font class="comment"> If the first character differs, the library code actually used is
+</font>00174 <font class="comment"> not compatible with the zlib.h header file used by the application.
+</font>00175 <font class="comment"> This check is automatically made by deflateInit and inflateInit.
+</font>00176 <font class="comment"> */</font>
+00177
+00178 <font class="comment">/*
+</font>00179 <font class="comment">ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
+</font>00180 <font class="comment">
+</font>00181 <font class="comment"> Initializes the internal stream state for compression. The fields
+</font>00182 <font class="comment"> zalloc, zfree and opaque must be initialized before by the caller.
+</font>00183 <font class="comment"> If zalloc and zfree are set to Z_NULL, deflateInit updates them to
+</font>00184 <font class="comment"> use default allocation functions.
+</font>00185 <font class="comment">
+</font>00186 <font class="comment"> The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
+</font>00187 <font class="comment"> 1 gives best speed, 9 gives best compression, 0 gives no compression at
+</font>00188 <font class="comment"> all (the input data is simply copied a block at a time).
+</font>00189 <font class="comment"> Z_DEFAULT_COMPRESSION requests a default compromise between speed and
+</font>00190 <font class="comment"> compression (currently equivalent to level 6).
+</font>00191 <font class="comment">
+</font>00192 <font class="comment"> deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
+</font>00193 <font class="comment"> enough memory, Z_STREAM_ERROR if level is not a valid compression level,
+</font>00194 <font class="comment"> Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
+</font>00195 <font class="comment"> with the version assumed by the caller (ZLIB_VERSION).
+</font>00196 <font class="comment"> msg is set to null if there is no error message. deflateInit does not
+</font>00197 <font class="comment"> perform any compression: this will be done by deflate().
+</font>00198 <font class="comment">*/</font>
+00199
+00200
+00201 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflate OF((z_streamp strm, <font class="keywordtype">int</font> flush));
+00202 <font class="comment">/*
+</font>00203 <font class="comment"> deflate compresses as much data as possible, and stops when the input
+</font>00204 <font class="comment"> buffer becomes empty or the output buffer becomes full. It may introduce some
+</font>00205 <font class="comment"> output latency (reading input without producing any output) except when
+</font>00206 <font class="comment"> forced to flush.
+</font>00207 <font class="comment">
+</font>00208 <font class="comment"> The detailed semantics are as follows. deflate performs one or both of the
+</font>00209 <font class="comment"> following actions:
+</font>00210 <font class="comment">
+</font>00211 <font class="comment"> - Compress more input starting at next_in and update next_in and avail_in
+</font>00212 <font class="comment"> accordingly. If not all input can be processed (because there is not
+</font>00213 <font class="comment"> enough room in the output buffer), next_in and avail_in are updated and
+</font>00214 <font class="comment"> processing will resume at this point for the next call of deflate().
+</font>00215 <font class="comment">
+</font>00216 <font class="comment"> - Provide more output starting at next_out and update next_out and avail_out
+</font>00217 <font class="comment"> accordingly. This action is forced if the parameter flush is non zero.
+</font>00218 <font class="comment"> Forcing flush frequently degrades the compression ratio, so this parameter
+</font>00219 <font class="comment"> should be set only when necessary (in interactive applications).
+</font>00220 <font class="comment"> Some output may be provided even if flush is not set.
+</font>00221 <font class="comment">
+</font>00222 <font class="comment"> Before the call of deflate(), the application should ensure that at least
+</font>00223 <font class="comment"> one of the actions is possible, by providing more input and/or consuming
+</font>00224 <font class="comment"> more output, and updating avail_in or avail_out accordingly; avail_out
+</font>00225 <font class="comment"> should never be zero before the call. The application can consume the
+</font>00226 <font class="comment"> compressed output when it wants, for example when the output buffer is full
+</font>00227 <font class="comment"> (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
+</font>00228 <font class="comment"> and with zero avail_out, it must be called again after making room in the
+</font>00229 <font class="comment"> output buffer because there might be more output pending.
+</font>00230 <font class="comment">
+</font>00231 <font class="comment"> If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
+</font>00232 <font class="comment"> flushed to the output buffer and the output is aligned on a byte boundary, so
+</font>00233 <font class="comment"> that the decompressor can get all input data available so far. (In particular
+</font>00234 <font class="comment"> avail_in is zero after the call if enough output space has been provided
+</font>00235 <font class="comment"> before the call.) Flushing may degrade compression for some compression
+</font>00236 <font class="comment"> algorithms and so it should be used only when necessary.
+</font>00237 <font class="comment">
+</font>00238 <font class="comment"> If flush is set to Z_FULL_FLUSH, all output is flushed as with
+</font>00239 <font class="comment"> Z_SYNC_FLUSH, and the compression state is reset so that decompression can
+</font>00240 <font class="comment"> restart from this point if previous compressed data has been damaged or if
+</font>00241 <font class="comment"> random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
+</font>00242 <font class="comment"> the compression.
+</font>00243 <font class="comment">
+</font>00244 <font class="comment"> If deflate returns with avail_out == 0, this function must be called again
+</font>00245 <font class="comment"> with the same value of the flush parameter and more output space (updated
+</font>00246 <font class="comment"> avail_out), until the flush is complete (deflate returns with non-zero
+</font>00247 <font class="comment"> avail_out).
+</font>00248 <font class="comment">
+</font>00249 <font class="comment"> If the parameter flush is set to Z_FINISH, pending input is processed,
+</font>00250 <font class="comment"> pending output is flushed and deflate returns with Z_STREAM_END if there
+</font>00251 <font class="comment"> was enough output space; if deflate returns with Z_OK, this function must be
+</font>00252 <font class="comment"> called again with Z_FINISH and more output space (updated avail_out) but no
+</font>00253 <font class="comment"> more input data, until it returns with Z_STREAM_END or an error. After
+</font>00254 <font class="comment"> deflate has returned Z_STREAM_END, the only possible operations on the
+</font>00255 <font class="comment"> stream are deflateReset or deflateEnd.
+</font>00256 <font class="comment">
+</font>00257 <font class="comment"> Z_FINISH can be used immediately after deflateInit if all the compression
+</font>00258 <font class="comment"> is to be done in a single step. In this case, avail_out must be at least
+</font>00259 <font class="comment"> 0.1% larger than avail_in plus 12 bytes. If deflate does not return
+</font>00260 <font class="comment"> Z_STREAM_END, then it must be called again as described above.
+</font>00261 <font class="comment">
+</font>00262 <font class="comment"> deflate() sets strm-&gt;adler to the adler32 checksum of all input read
+</font>00263 <font class="comment"> so far (that is, total_in bytes).
+</font>00264 <font class="comment">
+</font>00265 <font class="comment"> deflate() may update data_type if it can make a good guess about
+</font>00266 <font class="comment"> the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
+</font>00267 <font class="comment"> binary. This field is only for information purposes and does not affect
+</font>00268 <font class="comment"> the compression algorithm in any manner.
+</font>00269 <font class="comment">
+</font>00270 <font class="comment"> deflate() returns Z_OK if some progress has been made (more input
+</font>00271 <font class="comment"> processed or more output produced), Z_STREAM_END if all input has been
+</font>00272 <font class="comment"> consumed and all output has been produced (only when flush is set to
+</font>00273 <font class="comment"> Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
+</font>00274 <font class="comment"> if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
+</font>00275 <font class="comment"> (for example avail_in or avail_out was zero).
+</font>00276 <font class="comment">*/</font>
+00277
+00278
+00279 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflateEnd OF((z_streamp strm));
+00280 <font class="comment">/*
+</font>00281 <font class="comment"> All dynamically allocated data structures for this stream are freed.
+</font>00282 <font class="comment"> This function discards any unprocessed input and does not flush any
+</font>00283 <font class="comment"> pending output.
+</font>00284 <font class="comment">
+</font>00285 <font class="comment"> deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
+</font>00286 <font class="comment"> stream state was inconsistent, Z_DATA_ERROR if the stream was freed
+</font>00287 <font class="comment"> prematurely (some input or output was discarded). In the error case,
+</font>00288 <font class="comment"> msg may be set but then points to a static string (which must not be
+</font>00289 <font class="comment"> deallocated).
+</font>00290 <font class="comment">*/</font>
+00291
+00292
+00293 <font class="comment">/*
+</font>00294 <font class="comment">ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
+</font>00295 <font class="comment">
+</font>00296 <font class="comment"> Initializes the internal stream state for decompression. The fields
+</font>00297 <font class="comment"> next_in, avail_in, zalloc, zfree and opaque must be initialized before by
+</font>00298 <font class="comment"> the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
+</font>00299 <font class="comment"> value depends on the compression method), inflateInit determines the
+</font>00300 <font class="comment"> compression method from the zlib header and allocates all data structures
+</font>00301 <font class="comment"> accordingly; otherwise the allocation will be deferred to the first call of
+</font>00302 <font class="comment"> inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to
+</font>00303 <font class="comment"> use default allocation functions.
+</font>00304 <font class="comment">
+</font>00305 <font class="comment"> inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
+</font>00306 <font class="comment"> memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
+</font>00307 <font class="comment"> version assumed by the caller. msg is set to null if there is no error
+</font>00308 <font class="comment"> message. inflateInit does not perform any decompression apart from reading
+</font>00309 <font class="comment"> the zlib header if present: this will be done by inflate(). (So next_in and
+</font>00310 <font class="comment"> avail_in may be modified, but next_out and avail_out are unchanged.)
+</font>00311 <font class="comment">*/</font>
+00312
+00313
+00314 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflate OF((z_streamp strm, <font class="keywordtype">int</font> flush));
+00315 <font class="comment">/*
+</font>00316 <font class="comment"> inflate decompresses as much data as possible, and stops when the input
+</font>00317 <font class="comment"> buffer becomes empty or the output buffer becomes full. It may some
+</font>00318 <font class="comment"> introduce some output latency (reading input without producing any output)
+</font>00319 <font class="comment"> except when forced to flush.
+</font>00320 <font class="comment">
+</font>00321 <font class="comment"> The detailed semantics are as follows. inflate performs one or both of the
+</font>00322 <font class="comment"> following actions:
+</font>00323 <font class="comment">
+</font>00324 <font class="comment"> - Decompress more input starting at next_in and update next_in and avail_in
+</font>00325 <font class="comment"> accordingly. If not all input can be processed (because there is not
+</font>00326 <font class="comment"> enough room in the output buffer), next_in is updated and processing
+</font>00327 <font class="comment"> will resume at this point for the next call of inflate().
+</font>00328 <font class="comment">
+</font>00329 <font class="comment"> - Provide more output starting at next_out and update next_out and avail_out
+</font>00330 <font class="comment"> accordingly. inflate() provides as much output as possible, until there
+</font>00331 <font class="comment"> is no more input data or no more space in the output buffer (see below
+</font>00332 <font class="comment"> about the flush parameter).
+</font>00333 <font class="comment">
+</font>00334 <font class="comment"> Before the call of inflate(), the application should ensure that at least
+</font>00335 <font class="comment"> one of the actions is possible, by providing more input and/or consuming
+</font>00336 <font class="comment"> more output, and updating the next_* and avail_* values accordingly.
+</font>00337 <font class="comment"> The application can consume the uncompressed output when it wants, for
+</font>00338 <font class="comment"> example when the output buffer is full (avail_out == 0), or after each
+</font>00339 <font class="comment"> call of inflate(). If inflate returns Z_OK and with zero avail_out, it
+</font>00340 <font class="comment"> must be called again after making room in the output buffer because there
+</font>00341 <font class="comment"> might be more output pending.
+</font>00342 <font class="comment">
+</font>00343 <font class="comment"> If the parameter flush is set to Z_SYNC_FLUSH, inflate flushes as much
+</font>00344 <font class="comment"> output as possible to the output buffer. The flushing behavior of inflate is
+</font>00345 <font class="comment"> not specified for values of the flush parameter other than Z_SYNC_FLUSH
+</font>00346 <font class="comment"> and Z_FINISH, but the current implementation actually flushes as much output
+</font>00347 <font class="comment"> as possible anyway.
+</font>00348 <font class="comment">
+</font>00349 <font class="comment"> inflate() should normally be called until it returns Z_STREAM_END or an
+</font>00350 <font class="comment"> error. However if all decompression is to be performed in a single step
+</font>00351 <font class="comment"> (a single call of inflate), the parameter flush should be set to
+</font>00352 <font class="comment"> Z_FINISH. In this case all pending input is processed and all pending
+</font>00353 <font class="comment"> output is flushed; avail_out must be large enough to hold all the
+</font>00354 <font class="comment"> uncompressed data. (The size of the uncompressed data may have been saved
+</font>00355 <font class="comment"> by the compressor for this purpose.) The next operation on this stream must
+</font>00356 <font class="comment"> be inflateEnd to deallocate the decompression state. The use of Z_FINISH
+</font>00357 <font class="comment"> is never required, but can be used to inform inflate that a faster routine
+</font>00358 <font class="comment"> may be used for the single inflate() call.
+</font>00359 <font class="comment">
+</font>00360 <font class="comment"> If a preset dictionary is needed at this point (see inflateSetDictionary
+</font>00361 <font class="comment"> below), inflate sets strm-adler to the adler32 checksum of the
+</font>00362 <font class="comment"> dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise
+</font>00363 <font class="comment"> it sets strm-&gt;adler to the adler32 checksum of all output produced
+</font>00364 <font class="comment"> so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or
+</font>00365 <font class="comment"> an error code as described below. At the end of the stream, inflate()
+</font>00366 <font class="comment"> checks that its computed adler32 checksum is equal to that saved by the
+</font>00367 <font class="comment"> compressor and returns Z_STREAM_END only if the checksum is correct.
+</font>00368 <font class="comment">
+</font>00369 <font class="comment"> inflate() returns Z_OK if some progress has been made (more input processed
+</font>00370 <font class="comment"> or more output produced), Z_STREAM_END if the end of the compressed data has
+</font>00371 <font class="comment"> been reached and all uncompressed output has been produced, Z_NEED_DICT if a
+</font>00372 <font class="comment"> preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
+</font>00373 <font class="comment"> corrupted (input stream not conforming to the zlib format or incorrect
+</font>00374 <font class="comment"> adler32 checksum), Z_STREAM_ERROR if the stream structure was inconsistent
+</font>00375 <font class="comment"> (for example if next_in or next_out was NULL), Z_MEM_ERROR if there was not
+</font>00376 <font class="comment"> enough memory, Z_BUF_ERROR if no progress is possible or if there was not
+</font>00377 <font class="comment"> enough room in the output buffer when Z_FINISH is used. In the Z_DATA_ERROR
+</font>00378 <font class="comment"> case, the application may then call inflateSync to look for a good
+</font>00379 <font class="comment"> compression block.
+</font>00380 <font class="comment">*/</font>
+00381
+00382
+00383 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflateEnd OF((z_streamp strm));
+00384 <font class="comment">/*
+</font>00385 <font class="comment"> All dynamically allocated data structures for this stream are freed.
+</font>00386 <font class="comment"> This function discards any unprocessed input and does not flush any
+</font>00387 <font class="comment"> pending output.
+</font>00388 <font class="comment">
+</font>00389 <font class="comment"> inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
+</font>00390 <font class="comment"> was inconsistent. In the error case, msg may be set but then points to a
+</font>00391 <font class="comment"> static string (which must not be deallocated).
+</font>00392 <font class="comment">*/</font>
+00393
+00394 <font class="comment">/* Advanced functions */</font>
+00395
+00396 <font class="comment">/*
+</font>00397 <font class="comment"> The following functions are needed only in some special applications.
+</font>00398 <font class="comment">*/</font>
+00399
+00400 <font class="comment">/*
+</font>00401 <font class="comment">ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
+</font>00402 <font class="comment"> int level,
+</font>00403 <font class="comment"> int method,
+</font>00404 <font class="comment"> int windowBits,
+</font>00405 <font class="comment"> int memLevel,
+</font>00406 <font class="comment"> int strategy));
+</font>00407 <font class="comment">
+</font>00408 <font class="comment"> This is another version of deflateInit with more compression options. The
+</font>00409 <font class="comment"> fields next_in, zalloc, zfree and opaque must be initialized before by
+</font>00410 <font class="comment"> the caller.
+</font>00411 <font class="comment">
+</font>00412 <font class="comment"> The method parameter is the compression method. It must be Z_DEFLATED in
+</font>00413 <font class="comment"> this version of the library.
+</font>00414 <font class="comment">
+</font>00415 <font class="comment"> The windowBits parameter is the base two logarithm of the window size
+</font>00416 <font class="comment"> (the size of the history buffer). It should be in the range 8..15 for this
+</font>00417 <font class="comment"> version of the library. Larger values of this parameter result in better
+</font>00418 <font class="comment"> compression at the expense of memory usage. The default value is 15 if
+</font>00419 <font class="comment"> deflateInit is used instead.
+</font>00420 <font class="comment">
+</font>00421 <font class="comment"> The memLevel parameter specifies how much memory should be allocated
+</font>00422 <font class="comment"> for the internal compression state. memLevel=1 uses minimum memory but
+</font>00423 <font class="comment"> is slow and reduces compression ratio; memLevel=9 uses maximum memory
+</font>00424 <font class="comment"> for optimal speed. The default value is 8. See zconf.h for total memory
+</font>00425 <font class="comment"> usage as a function of windowBits and memLevel.
+</font>00426 <font class="comment">
+</font>00427 <font class="comment"> The strategy parameter is used to tune the compression algorithm. Use the
+</font>00428 <font class="comment"> value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
+</font>00429 <font class="comment"> filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no
+</font>00430 <font class="comment"> string match). Filtered data consists mostly of small values with a
+</font>00431 <font class="comment"> somewhat random distribution. In this case, the compression algorithm is
+</font>00432 <font class="comment"> tuned to compress them better. The effect of Z_FILTERED is to force more
+</font>00433 <font class="comment"> Huffman coding and less string matching; it is somewhat intermediate
+</font>00434 <font class="comment"> between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects
+</font>00435 <font class="comment"> the compression ratio but not the correctness of the compressed output even
+</font>00436 <font class="comment"> if it is not set appropriately.
+</font>00437 <font class="comment">
+</font>00438 <font class="comment"> deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+</font>00439 <font class="comment"> memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
+</font>00440 <font class="comment"> method). msg is set to null if there is no error message. deflateInit2 does
+</font>00441 <font class="comment"> not perform any compression: this will be done by deflate().
+</font>00442 <font class="comment">*/</font>
+00443
+00444 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflateSetDictionary OF((z_streamp strm,
+00445 <font class="keyword">const</font> Bytef *dictionary,
+00446 uInt dictLength));
+00447 <font class="comment">/*
+</font>00448 <font class="comment"> Initializes the compression dictionary from the given byte sequence
+</font>00449 <font class="comment"> without producing any compressed output. This function must be called
+</font>00450 <font class="comment"> immediately after deflateInit, deflateInit2 or deflateReset, before any
+</font>00451 <font class="comment"> call of deflate. The compressor and decompressor must use exactly the same
+</font>00452 <font class="comment"> dictionary (see inflateSetDictionary).
+</font>00453 <font class="comment">
+</font>00454 <font class="comment"> The dictionary should consist of strings (byte sequences) that are likely
+</font>00455 <font class="comment"> to be encountered later in the data to be compressed, with the most commonly
+</font>00456 <font class="comment"> used strings preferably put towards the end of the dictionary. Using a
+</font>00457 <font class="comment"> dictionary is most useful when the data to be compressed is short and can be
+</font>00458 <font class="comment"> predicted with good accuracy; the data can then be compressed better than
+</font>00459 <font class="comment"> with the default empty dictionary.
+</font>00460 <font class="comment">
+</font>00461 <font class="comment"> Depending on the size of the compression data structures selected by
+</font>00462 <font class="comment"> deflateInit or deflateInit2, a part of the dictionary may in effect be
+</font>00463 <font class="comment"> discarded, for example if the dictionary is larger than the window size in
+</font>00464 <font class="comment"> deflate or deflate2. Thus the strings most likely to be useful should be
+</font>00465 <font class="comment"> put at the end of the dictionary, not at the front.
+</font>00466 <font class="comment">
+</font>00467 <font class="comment"> Upon return of this function, strm-&gt;adler is set to the Adler32 value
+</font>00468 <font class="comment"> of the dictionary; the decompressor may later use this value to determine
+</font>00469 <font class="comment"> which dictionary has been used by the compressor. (The Adler32 value
+</font>00470 <font class="comment"> applies to the whole dictionary even if only a subset of the dictionary is
+</font>00471 <font class="comment"> actually used by the compressor.)
+</font>00472 <font class="comment">
+</font>00473 <font class="comment"> deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
+</font>00474 <font class="comment"> parameter is invalid (such as NULL dictionary) or the stream state is
+</font>00475 <font class="comment"> inconsistent (for example if deflate has already been called for this stream
+</font>00476 <font class="comment"> or if the compression method is bsort). deflateSetDictionary does not
+</font>00477 <font class="comment"> perform any compression: this will be done by deflate().
+</font>00478 <font class="comment">*/</font>
+00479
+00480 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflateCopy OF((z_streamp dest,
+00481 z_streamp source));
+00482 <font class="comment">/*
+</font>00483 <font class="comment"> Sets the destination stream as a complete copy of the source stream.
+</font>00484 <font class="comment">
+</font>00485 <font class="comment"> This function can be useful when several compression strategies will be
+</font>00486 <font class="comment"> tried, for example when there are several ways of pre-processing the input
+</font>00487 <font class="comment"> data with a filter. The streams that will be discarded should then be freed
+</font>00488 <font class="comment"> by calling deflateEnd. Note that deflateCopy duplicates the internal
+</font>00489 <font class="comment"> compression state which can be quite large, so this strategy is slow and
+</font>00490 <font class="comment"> can consume lots of memory.
+</font>00491 <font class="comment">
+</font>00492 <font class="comment"> deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
+</font>00493 <font class="comment"> enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
+</font>00494 <font class="comment"> (such as zalloc being NULL). msg is left unchanged in both source and
+</font>00495 <font class="comment"> destination.
+</font>00496 <font class="comment">*/</font>
+00497
+00498 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflateReset OF((z_streamp strm));
+00499 <font class="comment">/*
+</font>00500 <font class="comment"> This function is equivalent to deflateEnd followed by deflateInit,
+</font>00501 <font class="comment"> but does not free and reallocate all the internal compression state.
+</font>00502 <font class="comment"> The stream will keep the same compression level and any other attributes
+</font>00503 <font class="comment"> that may have been set by deflateInit2.
+</font>00504 <font class="comment">
+</font>00505 <font class="comment"> deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
+</font>00506 <font class="comment"> stream state was inconsistent (such as zalloc or state being NULL).
+</font>00507 <font class="comment">*/</font>
+00508
+00509 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflateParams OF((z_streamp strm,
+00510 <font class="keywordtype">int</font> level,
+00511 <font class="keywordtype">int</font> strategy));
+00512 <font class="comment">/*
+</font>00513 <font class="comment"> Dynamically update the compression level and compression strategy. The
+</font>00514 <font class="comment"> interpretation of level and strategy is as in deflateInit2. This can be
+</font>00515 <font class="comment"> used to switch between compression and straight copy of the input data, or
+</font>00516 <font class="comment"> to switch to a different kind of input data requiring a different
+</font>00517 <font class="comment"> strategy. If the compression level is changed, the input available so far
+</font>00518 <font class="comment"> is compressed with the old level (and may be flushed); the new level will
+</font>00519 <font class="comment"> take effect only at the next call of deflate().
+</font>00520 <font class="comment">
+</font>00521 <font class="comment"> Before the call of deflateParams, the stream state must be set as for
+</font>00522 <font class="comment"> a call of deflate(), since the currently available input may have to
+</font>00523 <font class="comment"> be compressed and flushed. In particular, strm-&gt;avail_out must be non-zero.
+</font>00524 <font class="comment">
+</font>00525 <font class="comment"> deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
+</font>00526 <font class="comment"> stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
+</font>00527 <font class="comment"> if strm-&gt;avail_out was zero.
+</font>00528 <font class="comment">*/</font>
+00529
+00530 <font class="comment">/*
+</font>00531 <font class="comment">ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
+</font>00532 <font class="comment"> int windowBits));
+</font>00533 <font class="comment">
+</font>00534 <font class="comment"> This is another version of inflateInit with an extra parameter. The
+</font>00535 <font class="comment"> fields next_in, avail_in, zalloc, zfree and opaque must be initialized
+</font>00536 <font class="comment"> before by the caller.
+</font>00537 <font class="comment">
+</font>00538 <font class="comment"> The windowBits parameter is the base two logarithm of the maximum window
+</font>00539 <font class="comment"> size (the size of the history buffer). It should be in the range 8..15 for
+</font>00540 <font class="comment"> this version of the library. The default value is 15 if inflateInit is used
+</font>00541 <font class="comment"> instead. If a compressed stream with a larger window size is given as
+</font>00542 <font class="comment"> input, inflate() will return with the error code Z_DATA_ERROR instead of
+</font>00543 <font class="comment"> trying to allocate a larger window.
+</font>00544 <font class="comment">
+</font>00545 <font class="comment"> inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+</font>00546 <font class="comment"> memory, Z_STREAM_ERROR if a parameter is invalid (such as a negative
+</font>00547 <font class="comment"> memLevel). msg is set to null if there is no error message. inflateInit2
+</font>00548 <font class="comment"> does not perform any decompression apart from reading the zlib header if
+</font>00549 <font class="comment"> present: this will be done by inflate(). (So next_in and avail_in may be
+</font>00550 <font class="comment"> modified, but next_out and avail_out are unchanged.)
+</font>00551 <font class="comment">*/</font>
+00552
+00553 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflateSetDictionary OF((z_streamp strm,
+00554 <font class="keyword">const</font> Bytef *dictionary,
+00555 uInt dictLength));
+00556 <font class="comment">/*
+</font>00557 <font class="comment"> Initializes the decompression dictionary from the given uncompressed byte
+</font>00558 <font class="comment"> sequence. This function must be called immediately after a call of inflate
+</font>00559 <font class="comment"> if this call returned Z_NEED_DICT. The dictionary chosen by the compressor
+</font>00560 <font class="comment"> can be determined from the Adler32 value returned by this call of
+</font>00561 <font class="comment"> inflate. The compressor and decompressor must use exactly the same
+</font>00562 <font class="comment"> dictionary (see deflateSetDictionary).
+</font>00563 <font class="comment">
+</font>00564 <font class="comment"> inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
+</font>00565 <font class="comment"> parameter is invalid (such as NULL dictionary) or the stream state is
+</font>00566 <font class="comment"> inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
+</font>00567 <font class="comment"> expected one (incorrect Adler32 value). inflateSetDictionary does not
+</font>00568 <font class="comment"> perform any decompression: this will be done by subsequent calls of
+</font>00569 <font class="comment"> inflate().
+</font>00570 <font class="comment">*/</font>
+00571
+00572 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflateSync OF((z_streamp strm));
+00573 <font class="comment">/*
+</font>00574 <font class="comment"> Skips invalid compressed data until a full flush point (see above the
+</font>00575 <font class="comment"> description of deflate with Z_FULL_FLUSH) can be found, or until all
+</font>00576 <font class="comment"> available input is skipped. No output is provided.
+</font>00577 <font class="comment">
+</font>00578 <font class="comment"> inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
+</font>00579 <font class="comment"> if no more input was provided, Z_DATA_ERROR if no flush point has been found,
+</font>00580 <font class="comment"> or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
+</font>00581 <font class="comment"> case, the application may save the current current value of total_in which
+</font>00582 <font class="comment"> indicates where valid compressed data was found. In the error case, the
+</font>00583 <font class="comment"> application may repeatedly call inflateSync, providing more input each time,
+</font>00584 <font class="comment"> until success or end of the input data.
+</font>00585 <font class="comment">*/</font>
+00586
+00587 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflateReset OF((z_streamp strm));
+00588 <font class="comment">/*
+</font>00589 <font class="comment"> This function is equivalent to inflateEnd followed by inflateInit,
+</font>00590 <font class="comment"> but does not free and reallocate all the internal decompression state.
+</font>00591 <font class="comment"> The stream will keep attributes that may have been set by inflateInit2.
+</font>00592 <font class="comment">
+</font>00593 <font class="comment"> inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
+</font>00594 <font class="comment"> stream state was inconsistent (such as zalloc or state being NULL).
+</font>00595 <font class="comment">*/</font>
+00596
+00597
+00598 <font class="comment">/* utility functions */</font>
+00599
+00600 <font class="comment">/*
+</font>00601 <font class="comment"> The following utility functions are implemented on top of the
+</font>00602 <font class="comment"> basic stream-oriented functions. To simplify the interface, some
+</font>00603 <font class="comment"> default options are assumed (compression level and memory usage,
+</font>00604 <font class="comment"> standard memory allocation functions). The source code of these
+</font>00605 <font class="comment"> utility functions can easily be modified if you need special options.
+</font>00606 <font class="comment">*/</font>
+00607
+00608 ZEXTERN <font class="keywordtype">int</font> ZEXPORT compress OF((Bytef *dest, uLongf *destLen,
+00609 <font class="keyword">const</font> Bytef *source, uLong sourceLen));
+00610 <font class="comment">/*
+</font>00611 <font class="comment"> Compresses the source buffer into the destination buffer. sourceLen is
+</font>00612 <font class="comment"> the byte length of the source buffer. Upon entry, destLen is the total
+</font>00613 <font class="comment"> size of the destination buffer, which must be at least 0.1% larger than
+</font>00614 <font class="comment"> sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the
+</font>00615 <font class="comment"> compressed buffer.
+</font>00616 <font class="comment"> This function can be used to compress a whole file at once if the
+</font>00617 <font class="comment"> input file is mmap'ed.
+</font>00618 <font class="comment"> compress returns Z_OK if success, Z_MEM_ERROR if there was not
+</font>00619 <font class="comment"> enough memory, Z_BUF_ERROR if there was not enough room in the output
+</font>00620 <font class="comment"> buffer.
+</font>00621 <font class="comment">*/</font>
+00622
+00623 ZEXTERN <font class="keywordtype">int</font> ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen,
+00624 <font class="keyword">const</font> Bytef *source, uLong sourceLen,
+00625 <font class="keywordtype">int</font> level));
+00626 <font class="comment">/*
+</font>00627 <font class="comment"> Compresses the source buffer into the destination buffer. The level
+</font>00628 <font class="comment"> parameter has the same meaning as in deflateInit. sourceLen is the byte
+</font>00629 <font class="comment"> length of the source buffer. Upon entry, destLen is the total size of the
+</font>00630 <font class="comment"> destination buffer, which must be at least 0.1% larger than sourceLen plus
+</font>00631 <font class="comment"> 12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
+</font>00632 <font class="comment">
+</font>00633 <font class="comment"> compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+</font>00634 <font class="comment"> memory, Z_BUF_ERROR if there was not enough room in the output buffer,
+</font>00635 <font class="comment"> Z_STREAM_ERROR if the level parameter is invalid.
+</font>00636 <font class="comment">*/</font>
+00637
+00638 ZEXTERN <font class="keywordtype">int</font> ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
+00639 <font class="keyword">const</font> Bytef *source, uLong sourceLen));
+00640 <font class="comment">/*
+</font>00641 <font class="comment"> Decompresses the source buffer into the destination buffer. sourceLen is
+</font>00642 <font class="comment"> the byte length of the source buffer. Upon entry, destLen is the total
+</font>00643 <font class="comment"> size of the destination buffer, which must be large enough to hold the
+</font>00644 <font class="comment"> entire uncompressed data. (The size of the uncompressed data must have
+</font>00645 <font class="comment"> been saved previously by the compressor and transmitted to the decompressor
+</font>00646 <font class="comment"> by some mechanism outside the scope of this compression library.)
+</font>00647 <font class="comment"> Upon exit, destLen is the actual size of the compressed buffer.
+</font>00648 <font class="comment"> This function can be used to decompress a whole file at once if the
+</font>00649 <font class="comment"> input file is mmap'ed.
+</font>00650 <font class="comment">
+</font>00651 <font class="comment"> uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
+</font>00652 <font class="comment"> enough memory, Z_BUF_ERROR if there was not enough room in the output
+</font>00653 <font class="comment"> buffer, or Z_DATA_ERROR if the input data was corrupted.
+</font>00654 <font class="comment">*/</font>
+00655
+00656
+00657 <font class="keyword">typedef</font> voidp gzFile;
+00658
+00659 ZEXTERN gzFile ZEXPORT gzopen OF((<font class="keyword">const</font> <font class="keywordtype">char</font> *path, <font class="keyword">const</font> <font class="keywordtype">char</font> *mode));
+00660 <font class="comment">/*
+</font>00661 <font class="comment"> Opens a gzip (.gz) file for reading or writing. The mode parameter
+</font>00662 <font class="comment"> is as in fopen ("rb" or "wb") but can also include a compression level
+</font>00663 <font class="comment"> ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
+</font>00664 <font class="comment"> Huffman only compression as in "wb1h". (See the description
+</font>00665 <font class="comment"> of deflateInit2 for more information about the strategy parameter.)
+</font>00666 <font class="comment">
+</font>00667 <font class="comment"> gzopen can be used to read a file which is not in gzip format; in this
+</font>00668 <font class="comment"> case gzread will directly read from the file without decompression.
+</font>00669 <font class="comment">
+</font>00670 <font class="comment"> gzopen returns NULL if the file could not be opened or if there was
+</font>00671 <font class="comment"> insufficient memory to allocate the (de)compression state; errno
+</font>00672 <font class="comment"> can be checked to distinguish the two cases (if errno is zero, the
+</font>00673 <font class="comment"> zlib error is Z_MEM_ERROR). */</font>
+00674
+00675 ZEXTERN gzFile ZEXPORT gzdopen OF((<font class="keywordtype">int</font> fd, <font class="keyword">const</font> <font class="keywordtype">char</font> *mode));
+00676 <font class="comment">/*
+</font>00677 <font class="comment"> gzdopen() associates a gzFile with the file descriptor fd. File
+</font>00678 <font class="comment"> descriptors are obtained from calls like open, dup, creat, pipe or
+</font>00679 <font class="comment"> fileno (in the file has been previously opened with fopen).
+</font>00680 <font class="comment"> The mode parameter is as in gzopen.
+</font>00681 <font class="comment"> The next call of gzclose on the returned gzFile will also close the
+</font>00682 <font class="comment"> file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
+</font>00683 <font class="comment"> descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
+</font>00684 <font class="comment"> gzdopen returns NULL if there was insufficient memory to allocate
+</font>00685 <font class="comment"> the (de)compression state.
+</font>00686 <font class="comment">*/</font>
+00687
+00688 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzsetparams OF((gzFile file, <font class="keywordtype">int</font> level, <font class="keywordtype">int</font> strategy));
+00689 <font class="comment">/*
+</font>00690 <font class="comment"> Dynamically update the compression level or strategy. See the description
+</font>00691 <font class="comment"> of deflateInit2 for the meaning of these parameters.
+</font>00692 <font class="comment"> gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
+</font>00693 <font class="comment"> opened for writing.
+</font>00694 <font class="comment">*/</font>
+00695
+00696 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzread OF((gzFile file, voidp buf, <font class="keywordtype">unsigned</font> len));
+00697 <font class="comment">/*
+</font>00698 <font class="comment"> Reads the given number of uncompressed bytes from the compressed file.
+</font>00699 <font class="comment"> If the input file was not in gzip format, gzread copies the given number
+</font>00700 <font class="comment"> of bytes into the buffer.
+</font>00701 <font class="comment"> gzread returns the number of uncompressed bytes actually read (0 for
+</font>00702 <font class="comment"> end of file, -1 for error). */</font>
+00703
+00704 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzwrite OF((gzFile file,
+00705 <font class="keyword">const</font> voidp buf, <font class="keywordtype">unsigned</font> len));
+00706 <font class="comment">/*
+</font>00707 <font class="comment"> Writes the given number of uncompressed bytes into the compressed file.
+</font>00708 <font class="comment"> gzwrite returns the number of uncompressed bytes actually written
+</font>00709 <font class="comment"> (0 in case of error).
+</font>00710 <font class="comment">*/</font>
+00711
+00712 ZEXTERN <font class="keywordtype">int</font> ZEXPORTVA gzprintf OF((gzFile file, <font class="keyword">const</font> <font class="keywordtype">char</font> *format, ...));
+00713 <font class="comment">/*
+</font>00714 <font class="comment"> Converts, formats, and writes the args to the compressed file under
+</font>00715 <font class="comment"> control of the format string, as in fprintf. gzprintf returns the number of
+</font>00716 <font class="comment"> uncompressed bytes actually written (0 in case of error).
+</font>00717 <font class="comment">*/</font>
+00718
+00719 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzputs OF((gzFile file, <font class="keyword">const</font> <font class="keywordtype">char</font> *s));
+00720 <font class="comment">/*
+</font>00721 <font class="comment"> Writes the given null-terminated string to the compressed file, excluding
+</font>00722 <font class="comment"> the terminating null character.
+</font>00723 <font class="comment"> gzputs returns the number of characters written, or -1 in case of error.
+</font>00724 <font class="comment">*/</font>
+00725
+00726 ZEXTERN <font class="keywordtype">char</font> * ZEXPORT gzgets OF((gzFile file, <font class="keywordtype">char</font> *buf, <font class="keywordtype">int</font> len));
+00727 <font class="comment">/*
+</font>00728 <font class="comment"> Reads bytes from the compressed file until len-1 characters are read, or
+</font>00729 <font class="comment"> a newline character is read and transferred to buf, or an end-of-file
+</font>00730 <font class="comment"> condition is encountered. The string is then terminated with a null
+</font>00731 <font class="comment"> character.
+</font>00732 <font class="comment"> gzgets returns buf, or Z_NULL in case of error.
+</font>00733 <font class="comment">*/</font>
+00734
+00735 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzputc OF((gzFile file, <font class="keywordtype">int</font> c));
+00736 <font class="comment">/*
+</font>00737 <font class="comment"> Writes c, converted to an unsigned char, into the compressed file.
+</font>00738 <font class="comment"> gzputc returns the value that was written, or -1 in case of error.
+</font>00739 <font class="comment">*/</font>
+00740
+00741 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzgetc OF((gzFile file));
+00742 <font class="comment">/*
+</font>00743 <font class="comment"> Reads one byte from the compressed file. gzgetc returns this byte
+</font>00744 <font class="comment"> or -1 in case of end of file or error.
+</font>00745 <font class="comment">*/</font>
+00746
+00747 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzflush OF((gzFile file, <font class="keywordtype">int</font> flush));
+00748 <font class="comment">/*
+</font>00749 <font class="comment"> Flushes all pending output into the compressed file. The parameter
+</font>00750 <font class="comment"> flush is as in the deflate() function. The return value is the zlib
+</font>00751 <font class="comment"> error number (see function gzerror below). gzflush returns Z_OK if
+</font>00752 <font class="comment"> the flush parameter is Z_FINISH and all output could be flushed.
+</font>00753 <font class="comment"> gzflush should be called only when strictly necessary because it can
+</font>00754 <font class="comment"> degrade compression.
+</font>00755 <font class="comment">*/</font>
+00756
+00757 ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
+00758 z_off_t offset, <font class="keywordtype">int</font> whence));
+00759 <font class="comment">/*
+</font>00760 <font class="comment"> Sets the starting position for the next gzread or gzwrite on the
+</font>00761 <font class="comment"> given compressed file. The offset represents a number of bytes in the
+</font>00762 <font class="comment"> uncompressed data stream. The whence parameter is defined as in lseek(2);
+</font>00763 <font class="comment"> the value SEEK_END is not supported.
+</font>00764 <font class="comment"> If the file is opened for reading, this function is emulated but can be
+</font>00765 <font class="comment"> extremely slow. If the file is opened for writing, only forward seeks are
+</font>00766 <font class="comment"> supported; gzseek then compresses a sequence of zeroes up to the new
+</font>00767 <font class="comment"> starting position.
+</font>00768 <font class="comment">
+</font>00769 <font class="comment"> gzseek returns the resulting offset location as measured in bytes from
+</font>00770 <font class="comment"> the beginning of the uncompressed stream, or -1 in case of error, in
+</font>00771 <font class="comment"> particular if the file is opened for writing and the new starting position
+</font>00772 <font class="comment"> would be before the current position.
+</font>00773 <font class="comment">*/</font>
+00774
+00775 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzrewind OF((gzFile file));
+00776 <font class="comment">/*
+</font>00777 <font class="comment"> Rewinds the given file. This function is supported only for reading.
+</font>00778 <font class="comment">
+</font>00779 <font class="comment"> gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
+</font>00780 <font class="comment">*/</font>
+00781
+00782 ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
+00783 <font class="comment">/*
+</font>00784 <font class="comment"> Returns the starting position for the next gzread or gzwrite on the
+</font>00785 <font class="comment"> given compressed file. This position represents a number of bytes in the
+</font>00786 <font class="comment"> uncompressed data stream.
+</font>00787 <font class="comment">
+</font>00788 <font class="comment"> gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
+</font>00789 <font class="comment">*/</font>
+00790
+00791 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzeof OF((gzFile file));
+00792 <font class="comment">/*
+</font>00793 <font class="comment"> Returns 1 when EOF has previously been detected reading the given
+</font>00794 <font class="comment"> input stream, otherwise zero.
+</font>00795 <font class="comment">*/</font>
+00796
+00797 ZEXTERN <font class="keywordtype">int</font> ZEXPORT gzclose OF((gzFile file));
+00798 <font class="comment">/*
+</font>00799 <font class="comment"> Flushes all pending output if necessary, closes the compressed file
+</font>00800 <font class="comment"> and deallocates all the (de)compression state. The return value is the zlib
+</font>00801 <font class="comment"> error number (see function gzerror below).
+</font>00802 <font class="comment">*/</font>
+00803
+00804 ZEXTERN <font class="keyword">const</font> <font class="keywordtype">char</font> * ZEXPORT gzerror OF((gzFile file, <font class="keywordtype">int</font> *errnum));
+00805 <font class="comment">/*
+</font>00806 <font class="comment"> Returns the error message for the last error which occurred on the
+</font>00807 <font class="comment"> given compressed file. errnum is set to zlib error number. If an
+</font>00808 <font class="comment"> error occurred in the file system and not in the compression library,
+</font>00809 <font class="comment"> errnum is set to Z_ERRNO and the application may consult errno
+</font>00810 <font class="comment"> to get the exact error code.
+</font>00811 <font class="comment">*/</font>
+00812
+00813 <font class="comment">/* checksum functions */</font>
+00814
+00815 <font class="comment">/*
+</font>00816 <font class="comment"> These functions are not related to compression but are exported
+</font>00817 <font class="comment"> anyway because they might be useful in applications using the
+</font>00818 <font class="comment"> compression library.
+</font>00819 <font class="comment">*/</font>
+00820
+00821 ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, <font class="keyword">const</font> Bytef *buf, uInt len));
+00822
+00823 <font class="comment">/*
+</font>00824 <font class="comment"> Update a running Adler-32 checksum with the bytes buf[0..len-1] and
+</font>00825 <font class="comment"> return the updated checksum. If buf is NULL, this function returns
+</font>00826 <font class="comment"> the required initial value for the checksum.
+</font>00827 <font class="comment"> An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
+</font>00828 <font class="comment"> much faster. Usage example:
+</font>00829 <font class="comment">
+</font>00830 <font class="comment"> uLong adler = adler32(0L, Z_NULL, 0);
+</font>00831 <font class="comment">
+</font>00832 <font class="comment"> while (read_buffer(buffer, length) != EOF) {
+</font>00833 <font class="comment"> adler = adler32(adler, buffer, length);
+</font>00834 <font class="comment"> }
+</font>00835 <font class="comment"> if (adler != original_adler) error();
+</font>00836 <font class="comment">*/</font>
+00837
+00838 ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, <font class="keyword">const</font> Bytef *buf, uInt len));
+00839 <font class="comment">/*
+</font>00840 <font class="comment"> Update a running crc with the bytes buf[0..len-1] and return the updated
+</font>00841 <font class="comment"> crc. If buf is NULL, this function returns the required initial value
+</font>00842 <font class="comment"> for the crc. Pre- and post-conditioning (one's complement) is performed
+</font>00843 <font class="comment"> within this function so it shouldn't be done by the application.
+</font>00844 <font class="comment"> Usage example:
+</font>00845 <font class="comment">
+</font>00846 <font class="comment"> uLong crc = crc32(0L, Z_NULL, 0);
+</font>00847 <font class="comment">
+</font>00848 <font class="comment"> while (read_buffer(buffer, length) != EOF) {
+</font>00849 <font class="comment"> crc = crc32(crc, buffer, length);
+</font>00850 <font class="comment"> }
+</font>00851 <font class="comment"> if (crc != original_crc) error();
+</font>00852 <font class="comment">*/</font>
+00853
+00854
+00855 <font class="comment">/* various hacks, don't look :) */</font>
+00856
+00857 <font class="comment">/* deflateInit and inflateInit are macros to allow checking the zlib version
+</font>00858 <font class="comment"> * and the compiler's view of z_stream:
+</font>00859 <font class="comment"> */</font>
+00860 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflateInit_ OF((z_streamp strm, <font class="keywordtype">int</font> level,
+00861 <font class="keyword">const</font> <font class="keywordtype">char</font> *version, <font class="keywordtype">int</font> stream_size));
+00862 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflateInit_ OF((z_streamp strm,
+00863 <font class="keyword">const</font> <font class="keywordtype">char</font> *version, <font class="keywordtype">int</font> stream_size));
+00864 ZEXTERN <font class="keywordtype">int</font> ZEXPORT deflateInit2_ OF((z_streamp strm, <font class="keywordtype">int</font> level, <font class="keywordtype">int</font> method,
+00865 <font class="keywordtype">int</font> windowBits, <font class="keywordtype">int</font> memLevel,
+00866 <font class="keywordtype">int</font> strategy, <font class="keyword">const</font> <font class="keywordtype">char</font> *version,
+00867 <font class="keywordtype">int</font> stream_size));
+00868 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflateInit2_ OF((z_streamp strm, <font class="keywordtype">int</font> windowBits,
+00869 <font class="keyword">const</font> <font class="keywordtype">char</font> *version, <font class="keywordtype">int</font> stream_size));
+00870 <font class="preprocessor">#define deflateInit(strm, level) \
+</font>00871 <font class="preprocessor"> deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
+</font>00872 <font class="preprocessor"></font><font class="preprocessor">#define inflateInit(strm) \
+</font>00873 <font class="preprocessor"> inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream))
+</font>00874 <font class="preprocessor"></font><font class="preprocessor">#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
+</font>00875 <font class="preprocessor"> deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
+</font>00876 <font class="preprocessor"> (strategy), ZLIB_VERSION, sizeof(z_stream))
+</font>00877 <font class="preprocessor"></font><font class="preprocessor">#define inflateInit2(strm, windowBits) \
+</font>00878 <font class="preprocessor"> inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
+</font>00879 <font class="preprocessor"></font>
+00880
+00881 <font class="preprocessor">#if !defined(_Z_UTIL_H) &amp;&amp; !defined(NO_DUMMY_DECL)
+</font>00882 <font class="preprocessor"></font> <font class="keyword">struct </font>internal_state {<font class="keywordtype">int</font> dummy;}; <font class="comment">/* hack for buggy compilers */</font>
+00883 <font class="preprocessor">#endif
+</font>00884 <font class="preprocessor"></font>
+00885 ZEXTERN <font class="keyword">const</font> <font class="keywordtype">char</font> * ZEXPORT zError OF((<font class="keywordtype">int</font> err));
+00886 ZEXTERN <font class="keywordtype">int</font> ZEXPORT inflateSyncPoint OF((z_streamp z));
+00887 ZEXTERN <font class="keyword">const</font> uLongf * ZEXPORT get_crc_table OF((<font class="keywordtype">void</font>));
+00888
+00889 <font class="preprocessor">#ifdef __cplusplus
+</font>00890 <font class="preprocessor"></font>}
+00891 <font class="preprocessor">#endif
+</font>00892 <font class="preprocessor"></font>
+00893 <font class="preprocessor">#endif </font><font class="comment">/* _ZLIB_H */</font>
+</div></pre><hr><address><small>Generated at Thu May 24 19:50:27 2001 for The Sword Project by
+<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
+<img src="doxygen.gif" alt="doxygen" align=center border=0
+width=110 height=53></a>1.1.5 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
+ &copy; 1997-2000</small></address>
+</body>
+</html>