annotate PsiCLASS-1.0.2/samtools-0.1.19/win32/zlib.h @ 0:903fc43d6227 draft default tip

Uploaded
author lsong10
date Fri, 26 Mar 2021 16:52:45 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1 /* zlib.h -- interface of the 'zlib' general purpose compression library
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
2 version 1.2.3, July 18th, 2005
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
3
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
4 Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
5
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
6 This software is provided 'as-is', without any express or implied
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
7 warranty. In no event will the authors be held liable for any damages
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
8 arising from the use of this software.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
9
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
10 Permission is granted to anyone to use this software for any purpose,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
11 including commercial applications, and to alter it and redistribute it
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
12 freely, subject to the following restrictions:
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
13
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
14 1. The origin of this software must not be misrepresented; you must not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
15 claim that you wrote the original software. If you use this software
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
16 in a product, an acknowledgment in the product documentation would be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
17 appreciated but is not required.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
18 2. Altered source versions must be plainly marked as such, and must not be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
19 misrepresented as being the original software.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
20 3. This notice may not be removed or altered from any source distribution.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
21
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
22 Jean-loup Gailly Mark Adler
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
23 jloup@gzip.org madler@alumni.caltech.edu
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
24
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
25
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
26 The data format used by the zlib library is described by RFCs (Request for
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
27 Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
28 (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
29 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
30
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
31 #ifndef ZLIB_H
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
32 #define ZLIB_H
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
33
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
34 #include "zconf.h"
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
35
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
36 #ifdef __cplusplus
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
37 extern "C" {
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
38 #endif
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
39
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
40 #define ZLIB_VERSION "1.2.3"
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
41 #define ZLIB_VERNUM 0x1230
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
42
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
43 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
44 The 'zlib' compression library provides in-memory compression and
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
45 decompression functions, including integrity checks of the uncompressed
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
46 data. This version of the library supports only one compression method
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
47 (deflation) but other algorithms will be added later and will have the same
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
48 stream interface.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
49
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
50 Compression can be done in a single step if the buffers are large
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
51 enough (for example if an input file is mmap'ed), or can be done by
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
52 repeated calls of the compression function. In the latter case, the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
53 application must provide more input and/or consume the output
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
54 (providing more output space) before each call.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
55
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
56 The compressed data format used by default by the in-memory functions is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
57 the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
58 around a deflate stream, which is itself documented in RFC 1951.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
59
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
60 The library also supports reading and writing files in gzip (.gz) format
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
61 with an interface similar to that of stdio using the functions that start
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
62 with "gz". The gzip format is different from the zlib format. gzip is a
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
63 gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
64
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
65 This library can optionally read and write gzip streams in memory as well.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
66
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
67 The zlib format was designed to be compact and fast for use in memory
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
68 and on communications channels. The gzip format was designed for single-
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
69 file compression on file systems, has a larger header than zlib to maintain
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
70 directory information, and uses a different, slower check method than zlib.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
71
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
72 The library does not install any signal handler. The decoder checks
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
73 the consistency of the compressed data, so the library should never
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
74 crash even in case of corrupted input.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
75 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
76
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
77 typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
78 typedef void (*free_func) OF((voidpf opaque, voidpf address));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
79
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
80 struct internal_state;
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
81
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
82 typedef struct z_stream_s {
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
83 Bytef *next_in; /* next input byte */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
84 uInt avail_in; /* number of bytes available at next_in */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
85 uLong total_in; /* total nb of input bytes read so far */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
86
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
87 Bytef *next_out; /* next output byte should be put there */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
88 uInt avail_out; /* remaining free space at next_out */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
89 uLong total_out; /* total nb of bytes output so far */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
90
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
91 char *msg; /* last error message, NULL if no error */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
92 struct internal_state FAR *state; /* not visible by applications */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
93
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
94 alloc_func zalloc; /* used to allocate the internal state */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
95 free_func zfree; /* used to free the internal state */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
96 voidpf opaque; /* private data object passed to zalloc and zfree */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
97
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
98 int data_type; /* best guess about the data type: binary or text */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
99 uLong adler; /* adler32 value of the uncompressed data */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
100 uLong reserved; /* reserved for future use */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
101 } z_stream;
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
102
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
103 typedef z_stream FAR *z_streamp;
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
104
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
105 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
106 gzip header information passed to and from zlib routines. See RFC 1952
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
107 for more details on the meanings of these fields.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
108 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
109 typedef struct gz_header_s {
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
110 int text; /* true if compressed data believed to be text */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
111 uLong time; /* modification time */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
112 int xflags; /* extra flags (not used when writing a gzip file) */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
113 int os; /* operating system */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
114 Bytef *extra; /* pointer to extra field or Z_NULL if none */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
115 uInt extra_len; /* extra field length (valid if extra != Z_NULL) */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
116 uInt extra_max; /* space at extra (only when reading header) */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
117 Bytef *name; /* pointer to zero-terminated file name or Z_NULL */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
118 uInt name_max; /* space at name (only when reading header) */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
119 Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
120 uInt comm_max; /* space at comment (only when reading header) */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
121 int hcrc; /* true if there was or will be a header crc */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
122 int done; /* true when done reading gzip header (not used
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
123 when writing a gzip file) */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
124 } gz_header;
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
125
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
126 typedef gz_header FAR *gz_headerp;
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
127
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
128 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
129 The application must update next_in and avail_in when avail_in has
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
130 dropped to zero. It must update next_out and avail_out when avail_out
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
131 has dropped to zero. The application must initialize zalloc, zfree and
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
132 opaque before calling the init function. All other fields are set by the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
133 compression library and must not be updated by the application.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
134
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
135 The opaque value provided by the application will be passed as the first
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
136 parameter for calls of zalloc and zfree. This can be useful for custom
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
137 memory management. The compression library attaches no meaning to the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
138 opaque value.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
139
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
140 zalloc must return Z_NULL if there is not enough memory for the object.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
141 If zlib is used in a multi-threaded application, zalloc and zfree must be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
142 thread safe.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
143
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
144 On 16-bit systems, the functions zalloc and zfree must be able to allocate
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
145 exactly 65536 bytes, but will not be required to allocate more than this
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
146 if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
147 pointers returned by zalloc for objects of exactly 65536 bytes *must*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
148 have their offset normalized to zero. The default allocation function
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
149 provided by this library ensures this (see zutil.c). To reduce memory
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
150 requirements and avoid any allocation of 64K objects, at the expense of
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
151 compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
152
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
153 The fields total_in and total_out can be used for statistics or
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
154 progress reports. After compression, total_in holds the total size of
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
155 the uncompressed data and may be saved for use in the decompressor
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
156 (particularly if the decompressor wants to decompress everything in
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
157 a single step).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
158 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
159
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
160 /* constants */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
161
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
162 #define Z_NO_FLUSH 0
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
163 #define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
164 #define Z_SYNC_FLUSH 2
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
165 #define Z_FULL_FLUSH 3
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
166 #define Z_FINISH 4
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
167 #define Z_BLOCK 5
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
168 /* Allowed flush values; see deflate() and inflate() below for details */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
169
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
170 #define Z_OK 0
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
171 #define Z_STREAM_END 1
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
172 #define Z_NEED_DICT 2
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
173 #define Z_ERRNO (-1)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
174 #define Z_STREAM_ERROR (-2)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
175 #define Z_DATA_ERROR (-3)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
176 #define Z_MEM_ERROR (-4)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
177 #define Z_BUF_ERROR (-5)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
178 #define Z_VERSION_ERROR (-6)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
179 /* Return codes for the compression/decompression functions. Negative
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
180 * values are errors, positive values are used for special but normal events.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
181 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
182
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
183 #define Z_NO_COMPRESSION 0
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
184 #define Z_BEST_SPEED 1
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
185 #define Z_BEST_COMPRESSION 9
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
186 #define Z_DEFAULT_COMPRESSION (-1)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
187 /* compression levels */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
188
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
189 #define Z_FILTERED 1
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
190 #define Z_HUFFMAN_ONLY 2
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
191 #define Z_RLE 3
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
192 #define Z_FIXED 4
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
193 #define Z_DEFAULT_STRATEGY 0
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
194 /* compression strategy; see deflateInit2() below for details */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
195
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
196 #define Z_BINARY 0
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
197 #define Z_TEXT 1
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
198 #define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
199 #define Z_UNKNOWN 2
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
200 /* Possible values of the data_type field (though see inflate()) */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
201
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
202 #define Z_DEFLATED 8
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
203 /* The deflate compression method (the only one supported in this version) */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
204
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
205 #define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
206
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
207 #define zlib_version zlibVersion()
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
208 /* for compatibility with versions < 1.0.2 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
209
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
210 /* basic functions */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
211
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
212 ZEXTERN const char * ZEXPORT zlibVersion OF((void));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
213 /* The application can compare zlibVersion and ZLIB_VERSION for consistency.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
214 If the first character differs, the library code actually used is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
215 not compatible with the zlib.h header file used by the application.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
216 This check is automatically made by deflateInit and inflateInit.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
217 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
218
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
219 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
220 ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
221
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
222 Initializes the internal stream state for compression. The fields
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
223 zalloc, zfree and opaque must be initialized before by the caller.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
224 If zalloc and zfree are set to Z_NULL, deflateInit updates them to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
225 use default allocation functions.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
226
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
227 The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
228 1 gives best speed, 9 gives best compression, 0 gives no compression at
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
229 all (the input data is simply copied a block at a time).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
230 Z_DEFAULT_COMPRESSION requests a default compromise between speed and
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
231 compression (currently equivalent to level 6).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
232
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
233 deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
234 enough memory, Z_STREAM_ERROR if level is not a valid compression level,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
235 Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
236 with the version assumed by the caller (ZLIB_VERSION).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
237 msg is set to null if there is no error message. deflateInit does not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
238 perform any compression: this will be done by deflate().
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
239 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
240
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
241
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
242 ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
243 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
244 deflate compresses as much data as possible, and stops when the input
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
245 buffer becomes empty or the output buffer becomes full. It may introduce some
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
246 output latency (reading input without producing any output) except when
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
247 forced to flush.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
248
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
249 The detailed semantics are as follows. deflate performs one or both of the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
250 following actions:
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
251
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
252 - Compress more input starting at next_in and update next_in and avail_in
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
253 accordingly. If not all input can be processed (because there is not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
254 enough room in the output buffer), next_in and avail_in are updated and
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
255 processing will resume at this point for the next call of deflate().
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
256
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
257 - Provide more output starting at next_out and update next_out and avail_out
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
258 accordingly. This action is forced if the parameter flush is non zero.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
259 Forcing flush frequently degrades the compression ratio, so this parameter
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
260 should be set only when necessary (in interactive applications).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
261 Some output may be provided even if flush is not set.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
262
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
263 Before the call of deflate(), the application should ensure that at least
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
264 one of the actions is possible, by providing more input and/or consuming
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
265 more output, and updating avail_in or avail_out accordingly; avail_out
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
266 should never be zero before the call. The application can consume the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
267 compressed output when it wants, for example when the output buffer is full
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
268 (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
269 and with zero avail_out, it must be called again after making room in the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
270 output buffer because there might be more output pending.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
271
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
272 Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
273 decide how much data to accumualte before producing output, in order to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
274 maximize compression.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
275
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
276 If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
277 flushed to the output buffer and the output is aligned on a byte boundary, so
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
278 that the decompressor can get all input data available so far. (In particular
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
279 avail_in is zero after the call if enough output space has been provided
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
280 before the call.) Flushing may degrade compression for some compression
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
281 algorithms and so it should be used only when necessary.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
282
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
283 If flush is set to Z_FULL_FLUSH, all output is flushed as with
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
284 Z_SYNC_FLUSH, and the compression state is reset so that decompression can
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
285 restart from this point if previous compressed data has been damaged or if
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
286 random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
287 compression.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
288
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
289 If deflate returns with avail_out == 0, this function must be called again
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
290 with the same value of the flush parameter and more output space (updated
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
291 avail_out), until the flush is complete (deflate returns with non-zero
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
292 avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
293 avail_out is greater than six to avoid repeated flush markers due to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
294 avail_out == 0 on return.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
295
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
296 If the parameter flush is set to Z_FINISH, pending input is processed,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
297 pending output is flushed and deflate returns with Z_STREAM_END if there
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
298 was enough output space; if deflate returns with Z_OK, this function must be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
299 called again with Z_FINISH and more output space (updated avail_out) but no
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
300 more input data, until it returns with Z_STREAM_END or an error. After
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
301 deflate has returned Z_STREAM_END, the only possible operations on the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
302 stream are deflateReset or deflateEnd.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
303
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
304 Z_FINISH can be used immediately after deflateInit if all the compression
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
305 is to be done in a single step. In this case, avail_out must be at least
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
306 the value returned by deflateBound (see below). If deflate does not return
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
307 Z_STREAM_END, then it must be called again as described above.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
308
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
309 deflate() sets strm->adler to the adler32 checksum of all input read
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
310 so far (that is, total_in bytes).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
311
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
312 deflate() may update strm->data_type if it can make a good guess about
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
313 the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
314 binary. This field is only for information purposes and does not affect
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
315 the compression algorithm in any manner.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
316
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
317 deflate() returns Z_OK if some progress has been made (more input
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
318 processed or more output produced), Z_STREAM_END if all input has been
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
319 consumed and all output has been produced (only when flush is set to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
320 Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
321 if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
322 (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
323 fatal, and deflate() can be called again with more input and more output
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
324 space to continue compressing.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
325 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
326
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
327
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
328 ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
329 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
330 All dynamically allocated data structures for this stream are freed.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
331 This function discards any unprocessed input and does not flush any
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
332 pending output.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
333
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
334 deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
335 stream state was inconsistent, Z_DATA_ERROR if the stream was freed
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
336 prematurely (some input or output was discarded). In the error case,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
337 msg may be set but then points to a static string (which must not be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
338 deallocated).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
339 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
340
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
341
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
342 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
343 ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
344
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
345 Initializes the internal stream state for decompression. The fields
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
346 next_in, avail_in, zalloc, zfree and opaque must be initialized before by
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
347 the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
348 value depends on the compression method), inflateInit determines the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
349 compression method from the zlib header and allocates all data structures
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
350 accordingly; otherwise the allocation will be deferred to the first call of
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
351 inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
352 use default allocation functions.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
353
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
354 inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
355 memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
356 version assumed by the caller. msg is set to null if there is no error
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
357 message. inflateInit does not perform any decompression apart from reading
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
358 the zlib header if present: this will be done by inflate(). (So next_in and
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
359 avail_in may be modified, but next_out and avail_out are unchanged.)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
360 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
361
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
362
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
363 ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
364 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
365 inflate decompresses as much data as possible, and stops when the input
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
366 buffer becomes empty or the output buffer becomes full. It may introduce
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
367 some output latency (reading input without producing any output) except when
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
368 forced to flush.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
369
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
370 The detailed semantics are as follows. inflate performs one or both of the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
371 following actions:
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
372
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
373 - Decompress more input starting at next_in and update next_in and avail_in
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
374 accordingly. If not all input can be processed (because there is not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
375 enough room in the output buffer), next_in is updated and processing
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
376 will resume at this point for the next call of inflate().
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
377
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
378 - Provide more output starting at next_out and update next_out and avail_out
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
379 accordingly. inflate() provides as much output as possible, until there
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
380 is no more input data or no more space in the output buffer (see below
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
381 about the flush parameter).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
382
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
383 Before the call of inflate(), the application should ensure that at least
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
384 one of the actions is possible, by providing more input and/or consuming
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
385 more output, and updating the next_* and avail_* values accordingly.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
386 The application can consume the uncompressed output when it wants, for
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
387 example when the output buffer is full (avail_out == 0), or after each
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
388 call of inflate(). If inflate returns Z_OK and with zero avail_out, it
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
389 must be called again after making room in the output buffer because there
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
390 might be more output pending.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
391
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
392 The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
393 Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
394 output as possible to the output buffer. Z_BLOCK requests that inflate() stop
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
395 if and when it gets to the next deflate block boundary. When decoding the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
396 zlib or gzip format, this will cause inflate() to return immediately after
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
397 the header and before the first block. When doing a raw inflate, inflate()
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
398 will go ahead and process the first block, and will return when it gets to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
399 the end of that block, or when it runs out of data.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
400
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
401 The Z_BLOCK option assists in appending to or combining deflate streams.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
402 Also to assist in this, on return inflate() will set strm->data_type to the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
403 number of unused bits in the last byte taken from strm->next_in, plus 64
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
404 if inflate() is currently decoding the last block in the deflate stream,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
405 plus 128 if inflate() returned immediately after decoding an end-of-block
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
406 code or decoding the complete header up to just before the first byte of the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
407 deflate stream. The end-of-block will not be indicated until all of the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
408 uncompressed data from that block has been written to strm->next_out. The
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
409 number of unused bits may in general be greater than seven, except when
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
410 bit 7 of data_type is set, in which case the number of unused bits will be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
411 less than eight.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
412
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
413 inflate() should normally be called until it returns Z_STREAM_END or an
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
414 error. However if all decompression is to be performed in a single step
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
415 (a single call of inflate), the parameter flush should be set to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
416 Z_FINISH. In this case all pending input is processed and all pending
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
417 output is flushed; avail_out must be large enough to hold all the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
418 uncompressed data. (The size of the uncompressed data may have been saved
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
419 by the compressor for this purpose.) The next operation on this stream must
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
420 be inflateEnd to deallocate the decompression state. The use of Z_FINISH
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
421 is never required, but can be used to inform inflate that a faster approach
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
422 may be used for the single inflate() call.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
423
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
424 In this implementation, inflate() always flushes as much output as
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
425 possible to the output buffer, and always uses the faster approach on the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
426 first call. So the only effect of the flush parameter in this implementation
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
427 is on the return value of inflate(), as noted below, or when it returns early
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
428 because Z_BLOCK is used.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
429
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
430 If a preset dictionary is needed after this call (see inflateSetDictionary
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
431 below), inflate sets strm->adler to the adler32 checksum of the dictionary
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
432 chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
433 strm->adler to the adler32 checksum of all output produced so far (that is,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
434 total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
435 below. At the end of the stream, inflate() checks that its computed adler32
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
436 checksum is equal to that saved by the compressor and returns Z_STREAM_END
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
437 only if the checksum is correct.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
438
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
439 inflate() will decompress and check either zlib-wrapped or gzip-wrapped
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
440 deflate data. The header type is detected automatically. Any information
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
441 contained in the gzip header is not retained, so applications that need that
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
442 information should instead use raw inflate, see inflateInit2() below, or
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
443 inflateBack() and perform their own processing of the gzip header and
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
444 trailer.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
445
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
446 inflate() returns Z_OK if some progress has been made (more input processed
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
447 or more output produced), Z_STREAM_END if the end of the compressed data has
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
448 been reached and all uncompressed output has been produced, Z_NEED_DICT if a
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
449 preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
450 corrupted (input stream not conforming to the zlib format or incorrect check
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
451 value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
452 if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
453 Z_BUF_ERROR if no progress is possible or if there was not enough room in the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
454 output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
455 inflate() can be called again with more input and more output space to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
456 continue decompressing. If Z_DATA_ERROR is returned, the application may then
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
457 call inflateSync() to look for a good compression block if a partial recovery
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
458 of the data is desired.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
459 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
460
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
461
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
462 ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
463 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
464 All dynamically allocated data structures for this stream are freed.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
465 This function discards any unprocessed input and does not flush any
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
466 pending output.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
467
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
468 inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
469 was inconsistent. In the error case, msg may be set but then points to a
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
470 static string (which must not be deallocated).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
471 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
472
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
473 /* Advanced functions */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
474
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
475 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
476 The following functions are needed only in some special applications.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
477 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
478
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
479 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
480 ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
481 int level,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
482 int method,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
483 int windowBits,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
484 int memLevel,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
485 int strategy));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
486
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
487 This is another version of deflateInit with more compression options. The
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
488 fields next_in, zalloc, zfree and opaque must be initialized before by
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
489 the caller.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
490
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
491 The method parameter is the compression method. It must be Z_DEFLATED in
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
492 this version of the library.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
493
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
494 The windowBits parameter is the base two logarithm of the window size
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
495 (the size of the history buffer). It should be in the range 8..15 for this
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
496 version of the library. Larger values of this parameter result in better
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
497 compression at the expense of memory usage. The default value is 15 if
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
498 deflateInit is used instead.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
499
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
500 windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
501 determines the window size. deflate() will then generate raw deflate data
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
502 with no zlib header or trailer, and will not compute an adler32 check value.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
503
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
504 windowBits can also be greater than 15 for optional gzip encoding. Add
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
505 16 to windowBits to write a simple gzip header and trailer around the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
506 compressed data instead of a zlib wrapper. The gzip header will have no
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
507 file name, no extra data, no comment, no modification time (set to zero),
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
508 no header crc, and the operating system will be set to 255 (unknown). If a
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
509 gzip stream is being written, strm->adler is a crc32 instead of an adler32.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
510
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
511 The memLevel parameter specifies how much memory should be allocated
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
512 for the internal compression state. memLevel=1 uses minimum memory but
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
513 is slow and reduces compression ratio; memLevel=9 uses maximum memory
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
514 for optimal speed. The default value is 8. See zconf.h for total memory
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
515 usage as a function of windowBits and memLevel.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
516
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
517 The strategy parameter is used to tune the compression algorithm. Use the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
518 value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
519 filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
520 string match), or Z_RLE to limit match distances to one (run-length
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
521 encoding). Filtered data consists mostly of small values with a somewhat
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
522 random distribution. In this case, the compression algorithm is tuned to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
523 compress them better. The effect of Z_FILTERED is to force more Huffman
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
524 coding and less string matching; it is somewhat intermediate between
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
525 Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
526 Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
527 parameter only affects the compression ratio but not the correctness of the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
528 compressed output even if it is not set appropriately. Z_FIXED prevents the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
529 use of dynamic Huffman codes, allowing for a simpler decoder for special
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
530 applications.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
531
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
532 deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
533 memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
534 method). msg is set to null if there is no error message. deflateInit2 does
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
535 not perform any compression: this will be done by deflate().
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
536 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
537
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
538 ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
539 const Bytef *dictionary,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
540 uInt dictLength));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
541 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
542 Initializes the compression dictionary from the given byte sequence
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
543 without producing any compressed output. This function must be called
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
544 immediately after deflateInit, deflateInit2 or deflateReset, before any
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
545 call of deflate. The compressor and decompressor must use exactly the same
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
546 dictionary (see inflateSetDictionary).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
547
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
548 The dictionary should consist of strings (byte sequences) that are likely
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
549 to be encountered later in the data to be compressed, with the most commonly
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
550 used strings preferably put towards the end of the dictionary. Using a
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
551 dictionary is most useful when the data to be compressed is short and can be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
552 predicted with good accuracy; the data can then be compressed better than
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
553 with the default empty dictionary.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
554
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
555 Depending on the size of the compression data structures selected by
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
556 deflateInit or deflateInit2, a part of the dictionary may in effect be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
557 discarded, for example if the dictionary is larger than the window size in
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
558 deflate or deflate2. Thus the strings most likely to be useful should be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
559 put at the end of the dictionary, not at the front. In addition, the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
560 current implementation of deflate will use at most the window size minus
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
561 262 bytes of the provided dictionary.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
562
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
563 Upon return of this function, strm->adler is set to the adler32 value
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
564 of the dictionary; the decompressor may later use this value to determine
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
565 which dictionary has been used by the compressor. (The adler32 value
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
566 applies to the whole dictionary even if only a subset of the dictionary is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
567 actually used by the compressor.) If a raw deflate was requested, then the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
568 adler32 value is not computed and strm->adler is not set.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
569
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
570 deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
571 parameter is invalid (such as NULL dictionary) or the stream state is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
572 inconsistent (for example if deflate has already been called for this stream
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
573 or if the compression method is bsort). deflateSetDictionary does not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
574 perform any compression: this will be done by deflate().
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
575 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
576
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
577 ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
578 z_streamp source));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
579 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
580 Sets the destination stream as a complete copy of the source stream.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
581
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
582 This function can be useful when several compression strategies will be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
583 tried, for example when there are several ways of pre-processing the input
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
584 data with a filter. The streams that will be discarded should then be freed
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
585 by calling deflateEnd. Note that deflateCopy duplicates the internal
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
586 compression state which can be quite large, so this strategy is slow and
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
587 can consume lots of memory.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
588
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
589 deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
590 enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
591 (such as zalloc being NULL). msg is left unchanged in both source and
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
592 destination.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
593 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
594
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
595 ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
596 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
597 This function is equivalent to deflateEnd followed by deflateInit,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
598 but does not free and reallocate all the internal compression state.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
599 The stream will keep the same compression level and any other attributes
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
600 that may have been set by deflateInit2.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
601
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
602 deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
603 stream state was inconsistent (such as zalloc or state being NULL).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
604 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
605
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
606 ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
607 int level,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
608 int strategy));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
609 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
610 Dynamically update the compression level and compression strategy. The
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
611 interpretation of level and strategy is as in deflateInit2. This can be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
612 used to switch between compression and straight copy of the input data, or
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
613 to switch to a different kind of input data requiring a different
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
614 strategy. If the compression level is changed, the input available so far
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
615 is compressed with the old level (and may be flushed); the new level will
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
616 take effect only at the next call of deflate().
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
617
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
618 Before the call of deflateParams, the stream state must be set as for
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
619 a call of deflate(), since the currently available input may have to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
620 be compressed and flushed. In particular, strm->avail_out must be non-zero.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
621
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
622 deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
623 stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
624 if strm->avail_out was zero.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
625 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
626
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
627 ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
628 int good_length,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
629 int max_lazy,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
630 int nice_length,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
631 int max_chain));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
632 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
633 Fine tune deflate's internal compression parameters. This should only be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
634 used by someone who understands the algorithm used by zlib's deflate for
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
635 searching for the best matching string, and even then only by the most
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
636 fanatic optimizer trying to squeeze out the last compressed bit for their
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
637 specific input data. Read the deflate.c source code for the meaning of the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
638 max_lazy, good_length, nice_length, and max_chain parameters.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
639
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
640 deflateTune() can be called after deflateInit() or deflateInit2(), and
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
641 returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
642 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
643
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
644 ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
645 uLong sourceLen));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
646 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
647 deflateBound() returns an upper bound on the compressed size after
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
648 deflation of sourceLen bytes. It must be called after deflateInit()
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
649 or deflateInit2(). This would be used to allocate an output buffer
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
650 for deflation in a single pass, and so would be called before deflate().
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
651 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
652
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
653 ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
654 int bits,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
655 int value));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
656 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
657 deflatePrime() inserts bits in the deflate output stream. The intent
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
658 is that this function is used to start off the deflate output with the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
659 bits leftover from a previous deflate stream when appending to it. As such,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
660 this function can only be used for raw deflate, and must be used before the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
661 first deflate() call after a deflateInit2() or deflateReset(). bits must be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
662 less than or equal to 16, and that many of the least significant bits of
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
663 value will be inserted in the output.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
664
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
665 deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
666 stream state was inconsistent.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
667 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
668
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
669 ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
670 gz_headerp head));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
671 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
672 deflateSetHeader() provides gzip header information for when a gzip
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
673 stream is requested by deflateInit2(). deflateSetHeader() may be called
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
674 after deflateInit2() or deflateReset() and before the first call of
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
675 deflate(). The text, time, os, extra field, name, and comment information
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
676 in the provided gz_header structure are written to the gzip header (xflag is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
677 ignored -- the extra flags are set according to the compression level). The
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
678 caller must assure that, if not Z_NULL, name and comment are terminated with
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
679 a zero byte, and that if extra is not Z_NULL, that extra_len bytes are
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
680 available there. If hcrc is true, a gzip header crc is included. Note that
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
681 the current versions of the command-line version of gzip (up through version
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
682 1.3.x) do not support header crc's, and will report that it is a "multi-part
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
683 gzip file" and give up.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
684
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
685 If deflateSetHeader is not used, the default gzip header has text false,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
686 the time set to zero, and os set to 255, with no extra, name, or comment
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
687 fields. The gzip header is returned to the default state by deflateReset().
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
688
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
689 deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
690 stream state was inconsistent.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
691 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
692
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
693 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
694 ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
695 int windowBits));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
696
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
697 This is another version of inflateInit with an extra parameter. The
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
698 fields next_in, avail_in, zalloc, zfree and opaque must be initialized
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
699 before by the caller.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
700
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
701 The windowBits parameter is the base two logarithm of the maximum window
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
702 size (the size of the history buffer). It should be in the range 8..15 for
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
703 this version of the library. The default value is 15 if inflateInit is used
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
704 instead. windowBits must be greater than or equal to the windowBits value
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
705 provided to deflateInit2() while compressing, or it must be equal to 15 if
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
706 deflateInit2() was not used. If a compressed stream with a larger window
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
707 size is given as input, inflate() will return with the error code
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
708 Z_DATA_ERROR instead of trying to allocate a larger window.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
709
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
710 windowBits can also be -8..-15 for raw inflate. In this case, -windowBits
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
711 determines the window size. inflate() will then process raw deflate data,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
712 not looking for a zlib or gzip header, not generating a check value, and not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
713 looking for any check values for comparison at the end of the stream. This
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
714 is for use with other formats that use the deflate compressed data format
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
715 such as zip. Those formats provide their own check values. If a custom
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
716 format is developed using the raw deflate format for compressed data, it is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
717 recommended that a check value such as an adler32 or a crc32 be applied to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
718 the uncompressed data as is done in the zlib, gzip, and zip formats. For
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
719 most applications, the zlib format should be used as is. Note that comments
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
720 above on the use in deflateInit2() applies to the magnitude of windowBits.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
721
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
722 windowBits can also be greater than 15 for optional gzip decoding. Add
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
723 32 to windowBits to enable zlib and gzip decoding with automatic header
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
724 detection, or add 16 to decode only the gzip format (the zlib format will
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
725 return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
726 a crc32 instead of an adler32.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
727
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
728 inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
729 memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
730 is set to null if there is no error message. inflateInit2 does not perform
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
731 any decompression apart from reading the zlib header if present: this will
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
732 be done by inflate(). (So next_in and avail_in may be modified, but next_out
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
733 and avail_out are unchanged.)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
734 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
735
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
736 ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
737 const Bytef *dictionary,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
738 uInt dictLength));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
739 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
740 Initializes the decompression dictionary from the given uncompressed byte
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
741 sequence. This function must be called immediately after a call of inflate,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
742 if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
743 can be determined from the adler32 value returned by that call of inflate.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
744 The compressor and decompressor must use exactly the same dictionary (see
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
745 deflateSetDictionary). For raw inflate, this function can be called
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
746 immediately after inflateInit2() or inflateReset() and before any call of
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
747 inflate() to set the dictionary. The application must insure that the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
748 dictionary that was used for compression is provided.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
749
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
750 inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
751 parameter is invalid (such as NULL dictionary) or the stream state is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
752 inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
753 expected one (incorrect adler32 value). inflateSetDictionary does not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
754 perform any decompression: this will be done by subsequent calls of
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
755 inflate().
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
756 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
757
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
758 ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
759 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
760 Skips invalid compressed data until a full flush point (see above the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
761 description of deflate with Z_FULL_FLUSH) can be found, or until all
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
762 available input is skipped. No output is provided.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
763
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
764 inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
765 if no more input was provided, Z_DATA_ERROR if no flush point has been found,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
766 or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
767 case, the application may save the current current value of total_in which
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
768 indicates where valid compressed data was found. In the error case, the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
769 application may repeatedly call inflateSync, providing more input each time,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
770 until success or end of the input data.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
771 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
772
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
773 ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
774 z_streamp source));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
775 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
776 Sets the destination stream as a complete copy of the source stream.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
777
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
778 This function can be useful when randomly accessing a large stream. The
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
779 first pass through the stream can periodically record the inflate state,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
780 allowing restarting inflate at those points when randomly accessing the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
781 stream.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
782
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
783 inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
784 enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
785 (such as zalloc being NULL). msg is left unchanged in both source and
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
786 destination.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
787 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
788
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
789 ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
790 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
791 This function is equivalent to inflateEnd followed by inflateInit,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
792 but does not free and reallocate all the internal decompression state.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
793 The stream will keep attributes that may have been set by inflateInit2.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
794
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
795 inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
796 stream state was inconsistent (such as zalloc or state being NULL).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
797 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
798
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
799 ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
800 int bits,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
801 int value));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
802 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
803 This function inserts bits in the inflate input stream. The intent is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
804 that this function is used to start inflating at a bit position in the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
805 middle of a byte. The provided bits will be used before any bytes are used
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
806 from next_in. This function should only be used with raw inflate, and
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
807 should be used before the first inflate() call after inflateInit2() or
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
808 inflateReset(). bits must be less than or equal to 16, and that many of the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
809 least significant bits of value will be inserted in the input.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
810
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
811 inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
812 stream state was inconsistent.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
813 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
814
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
815 ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
816 gz_headerp head));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
817 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
818 inflateGetHeader() requests that gzip header information be stored in the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
819 provided gz_header structure. inflateGetHeader() may be called after
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
820 inflateInit2() or inflateReset(), and before the first call of inflate().
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
821 As inflate() processes the gzip stream, head->done is zero until the header
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
822 is completed, at which time head->done is set to one. If a zlib stream is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
823 being decoded, then head->done is set to -1 to indicate that there will be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
824 no gzip header information forthcoming. Note that Z_BLOCK can be used to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
825 force inflate() to return immediately after header processing is complete
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
826 and before any actual data is decompressed.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
827
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
828 The text, time, xflags, and os fields are filled in with the gzip header
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
829 contents. hcrc is set to true if there is a header CRC. (The header CRC
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
830 was valid if done is set to one.) If extra is not Z_NULL, then extra_max
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
831 contains the maximum number of bytes to write to extra. Once done is true,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
832 extra_len contains the actual extra field length, and extra contains the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
833 extra field, or that field truncated if extra_max is less than extra_len.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
834 If name is not Z_NULL, then up to name_max characters are written there,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
835 terminated with a zero unless the length is greater than name_max. If
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
836 comment is not Z_NULL, then up to comm_max characters are written there,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
837 terminated with a zero unless the length is greater than comm_max. When
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
838 any of extra, name, or comment are not Z_NULL and the respective field is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
839 not present in the header, then that field is set to Z_NULL to signal its
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
840 absence. This allows the use of deflateSetHeader() with the returned
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
841 structure to duplicate the header. However if those fields are set to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
842 allocated memory, then the application will need to save those pointers
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
843 elsewhere so that they can be eventually freed.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
844
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
845 If inflateGetHeader is not used, then the header information is simply
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
846 discarded. The header is always checked for validity, including the header
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
847 CRC if present. inflateReset() will reset the process to discard the header
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
848 information. The application would need to call inflateGetHeader() again to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
849 retrieve the header from the next gzip stream.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
850
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
851 inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
852 stream state was inconsistent.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
853 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
854
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
855 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
856 ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
857 unsigned char FAR *window));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
858
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
859 Initialize the internal stream state for decompression using inflateBack()
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
860 calls. The fields zalloc, zfree and opaque in strm must be initialized
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
861 before the call. If zalloc and zfree are Z_NULL, then the default library-
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
862 derived memory allocation routines are used. windowBits is the base two
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
863 logarithm of the window size, in the range 8..15. window is a caller
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
864 supplied buffer of that size. Except for special applications where it is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
865 assured that deflate was used with small window sizes, windowBits must be 15
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
866 and a 32K byte window must be supplied to be able to decompress general
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
867 deflate streams.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
868
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
869 See inflateBack() for the usage of these routines.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
870
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
871 inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
872 the paramaters are invalid, Z_MEM_ERROR if the internal state could not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
873 be allocated, or Z_VERSION_ERROR if the version of the library does not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
874 match the version of the header file.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
875 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
876
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
877 typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
878 typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
879
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
880 ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
881 in_func in, void FAR *in_desc,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
882 out_func out, void FAR *out_desc));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
883 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
884 inflateBack() does a raw inflate with a single call using a call-back
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
885 interface for input and output. This is more efficient than inflate() for
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
886 file i/o applications in that it avoids copying between the output and the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
887 sliding window by simply making the window itself the output buffer. This
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
888 function trusts the application to not change the output buffer passed by
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
889 the output function, at least until inflateBack() returns.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
890
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
891 inflateBackInit() must be called first to allocate the internal state
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
892 and to initialize the state with the user-provided window buffer.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
893 inflateBack() may then be used multiple times to inflate a complete, raw
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
894 deflate stream with each call. inflateBackEnd() is then called to free
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
895 the allocated state.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
896
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
897 A raw deflate stream is one with no zlib or gzip header or trailer.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
898 This routine would normally be used in a utility that reads zip or gzip
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
899 files and writes out uncompressed files. The utility would decode the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
900 header and process the trailer on its own, hence this routine expects
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
901 only the raw deflate stream to decompress. This is different from the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
902 normal behavior of inflate(), which expects either a zlib or gzip header and
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
903 trailer around the deflate stream.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
904
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
905 inflateBack() uses two subroutines supplied by the caller that are then
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
906 called by inflateBack() for input and output. inflateBack() calls those
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
907 routines until it reads a complete deflate stream and writes out all of the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
908 uncompressed data, or until it encounters an error. The function's
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
909 parameters and return types are defined above in the in_func and out_func
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
910 typedefs. inflateBack() will call in(in_desc, &buf) which should return the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
911 number of bytes of provided input, and a pointer to that input in buf. If
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
912 there is no input available, in() must return zero--buf is ignored in that
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
913 case--and inflateBack() will return a buffer error. inflateBack() will call
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
914 out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out()
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
915 should return zero on success, or non-zero on failure. If out() returns
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
916 non-zero, inflateBack() will return with an error. Neither in() nor out()
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
917 are permitted to change the contents of the window provided to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
918 inflateBackInit(), which is also the buffer that out() uses to write from.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
919 The length written by out() will be at most the window size. Any non-zero
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
920 amount of input may be provided by in().
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
921
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
922 For convenience, inflateBack() can be provided input on the first call by
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
923 setting strm->next_in and strm->avail_in. If that input is exhausted, then
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
924 in() will be called. Therefore strm->next_in must be initialized before
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
925 calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
926 immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
927 must also be initialized, and then if strm->avail_in is not zero, input will
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
928 initially be taken from strm->next_in[0 .. strm->avail_in - 1].
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
929
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
930 The in_desc and out_desc parameters of inflateBack() is passed as the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
931 first parameter of in() and out() respectively when they are called. These
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
932 descriptors can be optionally used to pass any information that the caller-
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
933 supplied in() and out() functions need to do their job.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
934
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
935 On return, inflateBack() will set strm->next_in and strm->avail_in to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
936 pass back any unused input that was provided by the last in() call. The
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
937 return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
938 if in() or out() returned an error, Z_DATA_ERROR if there was a format
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
939 error in the deflate stream (in which case strm->msg is set to indicate the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
940 nature of the error), or Z_STREAM_ERROR if the stream was not properly
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
941 initialized. In the case of Z_BUF_ERROR, an input or output error can be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
942 distinguished using strm->next_in which will be Z_NULL only if in() returned
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
943 an error. If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
944 out() returning non-zero. (in() will always be called before out(), so
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
945 strm->next_in is assured to be defined if out() returns non-zero.) Note
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
946 that inflateBack() cannot return Z_OK.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
947 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
948
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
949 ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
950 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
951 All memory allocated by inflateBackInit() is freed.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
952
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
953 inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
954 state was inconsistent.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
955 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
956
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
957 ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
958 /* Return flags indicating compile-time options.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
959
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
960 Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
961 1.0: size of uInt
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
962 3.2: size of uLong
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
963 5.4: size of voidpf (pointer)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
964 7.6: size of z_off_t
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
965
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
966 Compiler, assembler, and debug options:
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
967 8: DEBUG
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
968 9: ASMV or ASMINF -- use ASM code
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
969 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
970 11: 0 (reserved)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
971
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
972 One-time table building (smaller code, but not thread-safe if true):
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
973 12: BUILDFIXED -- build static block decoding tables when needed
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
974 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
975 14,15: 0 (reserved)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
976
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
977 Library content (indicates missing functionality):
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
978 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
979 deflate code when not needed)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
980 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
981 and decode gzip streams (to avoid linking crc code)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
982 18-19: 0 (reserved)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
983
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
984 Operation variations (changes in library functionality):
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
985 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
986 21: FASTEST -- deflate algorithm with only one, lowest compression level
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
987 22,23: 0 (reserved)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
988
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
989 The sprintf variant used by gzprintf (zero is best):
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
990 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
991 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure!
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
992 26: 0 = returns value, 1 = void -- 1 means inferred string length returned
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
993
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
994 Remainder:
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
995 27-31: 0 (reserved)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
996 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
997
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
998
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
999 /* utility functions */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1000
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1001 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1002 The following utility functions are implemented on top of the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1003 basic stream-oriented functions. To simplify the interface, some
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1004 default options are assumed (compression level and memory usage,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1005 standard memory allocation functions). The source code of these
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1006 utility functions can easily be modified if you need special options.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1007 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1008
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1009 ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1010 const Bytef *source, uLong sourceLen));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1011 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1012 Compresses the source buffer into the destination buffer. sourceLen is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1013 the byte length of the source buffer. Upon entry, destLen is the total
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1014 size of the destination buffer, which must be at least the value returned
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1015 by compressBound(sourceLen). Upon exit, destLen is the actual size of the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1016 compressed buffer.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1017 This function can be used to compress a whole file at once if the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1018 input file is mmap'ed.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1019 compress returns Z_OK if success, Z_MEM_ERROR if there was not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1020 enough memory, Z_BUF_ERROR if there was not enough room in the output
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1021 buffer.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1022 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1023
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1024 ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1025 const Bytef *source, uLong sourceLen,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1026 int level));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1027 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1028 Compresses the source buffer into the destination buffer. The level
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1029 parameter has the same meaning as in deflateInit. sourceLen is the byte
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1030 length of the source buffer. Upon entry, destLen is the total size of the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1031 destination buffer, which must be at least the value returned by
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1032 compressBound(sourceLen). Upon exit, destLen is the actual size of the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1033 compressed buffer.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1034
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1035 compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1036 memory, Z_BUF_ERROR if there was not enough room in the output buffer,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1037 Z_STREAM_ERROR if the level parameter is invalid.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1038 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1039
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1040 ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1041 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1042 compressBound() returns an upper bound on the compressed size after
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1043 compress() or compress2() on sourceLen bytes. It would be used before
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1044 a compress() or compress2() call to allocate the destination buffer.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1045 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1046
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1047 ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1048 const Bytef *source, uLong sourceLen));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1049 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1050 Decompresses the source buffer into the destination buffer. sourceLen is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1051 the byte length of the source buffer. Upon entry, destLen is the total
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1052 size of the destination buffer, which must be large enough to hold the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1053 entire uncompressed data. (The size of the uncompressed data must have
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1054 been saved previously by the compressor and transmitted to the decompressor
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1055 by some mechanism outside the scope of this compression library.)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1056 Upon exit, destLen is the actual size of the compressed buffer.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1057 This function can be used to decompress a whole file at once if the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1058 input file is mmap'ed.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1059
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1060 uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1061 enough memory, Z_BUF_ERROR if there was not enough room in the output
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1062 buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1063 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1064
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1065
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1066 typedef voidp gzFile;
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1067
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1068 ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1069 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1070 Opens a gzip (.gz) file for reading or writing. The mode parameter
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1071 is as in fopen ("rb" or "wb") but can also include a compression level
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1072 ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1073 Huffman only compression as in "wb1h", or 'R' for run-length encoding
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1074 as in "wb1R". (See the description of deflateInit2 for more information
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1075 about the strategy parameter.)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1076
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1077 gzopen can be used to read a file which is not in gzip format; in this
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1078 case gzread will directly read from the file without decompression.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1079
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1080 gzopen returns NULL if the file could not be opened or if there was
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1081 insufficient memory to allocate the (de)compression state; errno
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1082 can be checked to distinguish the two cases (if errno is zero, the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1083 zlib error is Z_MEM_ERROR). */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1084
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1085 ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1086 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1087 gzdopen() associates a gzFile with the file descriptor fd. File
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1088 descriptors are obtained from calls like open, dup, creat, pipe or
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1089 fileno (in the file has been previously opened with fopen).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1090 The mode parameter is as in gzopen.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1091 The next call of gzclose on the returned gzFile will also close the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1092 file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1093 descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1094 gzdopen returns NULL if there was insufficient memory to allocate
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1095 the (de)compression state.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1096 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1097
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1098 ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1099 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1100 Dynamically update the compression level or strategy. See the description
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1101 of deflateInit2 for the meaning of these parameters.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1102 gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1103 opened for writing.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1104 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1105
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1106 ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1107 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1108 Reads the given number of uncompressed bytes from the compressed file.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1109 If the input file was not in gzip format, gzread copies the given number
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1110 of bytes into the buffer.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1111 gzread returns the number of uncompressed bytes actually read (0 for
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1112 end of file, -1 for error). */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1113
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1114 ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1115 voidpc buf, unsigned len));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1116 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1117 Writes the given number of uncompressed bytes into the compressed file.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1118 gzwrite returns the number of uncompressed bytes actually written
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1119 (0 in case of error).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1120 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1121
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1122 ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1123 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1124 Converts, formats, and writes the args to the compressed file under
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1125 control of the format string, as in fprintf. gzprintf returns the number of
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1126 uncompressed bytes actually written (0 in case of error). The number of
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1127 uncompressed bytes written is limited to 4095. The caller should assure that
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1128 this limit is not exceeded. If it is exceeded, then gzprintf() will return
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1129 return an error (0) with nothing written. In this case, there may also be a
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1130 buffer overflow with unpredictable consequences, which is possible only if
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1131 zlib was compiled with the insecure functions sprintf() or vsprintf()
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1132 because the secure snprintf() or vsnprintf() functions were not available.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1133 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1134
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1135 ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1136 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1137 Writes the given null-terminated string to the compressed file, excluding
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1138 the terminating null character.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1139 gzputs returns the number of characters written, or -1 in case of error.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1140 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1141
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1142 ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1143 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1144 Reads bytes from the compressed file until len-1 characters are read, or
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1145 a newline character is read and transferred to buf, or an end-of-file
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1146 condition is encountered. The string is then terminated with a null
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1147 character.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1148 gzgets returns buf, or Z_NULL in case of error.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1149 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1150
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1151 ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1152 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1153 Writes c, converted to an unsigned char, into the compressed file.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1154 gzputc returns the value that was written, or -1 in case of error.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1155 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1156
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1157 ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1158 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1159 Reads one byte from the compressed file. gzgetc returns this byte
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1160 or -1 in case of end of file or error.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1161 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1162
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1163 ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1164 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1165 Push one character back onto the stream to be read again later.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1166 Only one character of push-back is allowed. gzungetc() returns the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1167 character pushed, or -1 on failure. gzungetc() will fail if a
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1168 character has been pushed but not read yet, or if c is -1. The pushed
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1169 character will be discarded if the stream is repositioned with gzseek()
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1170 or gzrewind().
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1171 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1172
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1173 ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1174 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1175 Flushes all pending output into the compressed file. The parameter
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1176 flush is as in the deflate() function. The return value is the zlib
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1177 error number (see function gzerror below). gzflush returns Z_OK if
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1178 the flush parameter is Z_FINISH and all output could be flushed.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1179 gzflush should be called only when strictly necessary because it can
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1180 degrade compression.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1181 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1182
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1183 ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1184 z_off_t offset, int whence));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1185 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1186 Sets the starting position for the next gzread or gzwrite on the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1187 given compressed file. The offset represents a number of bytes in the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1188 uncompressed data stream. The whence parameter is defined as in lseek(2);
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1189 the value SEEK_END is not supported.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1190 If the file is opened for reading, this function is emulated but can be
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1191 extremely slow. If the file is opened for writing, only forward seeks are
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1192 supported; gzseek then compresses a sequence of zeroes up to the new
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1193 starting position.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1194
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1195 gzseek returns the resulting offset location as measured in bytes from
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1196 the beginning of the uncompressed stream, or -1 in case of error, in
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1197 particular if the file is opened for writing and the new starting position
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1198 would be before the current position.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1199 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1200
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1201 ZEXTERN int ZEXPORT gzrewind OF((gzFile file));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1202 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1203 Rewinds the given file. This function is supported only for reading.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1204
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1205 gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1206 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1207
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1208 ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1209 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1210 Returns the starting position for the next gzread or gzwrite on the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1211 given compressed file. This position represents a number of bytes in the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1212 uncompressed data stream.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1213
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1214 gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1215 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1216
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1217 ZEXTERN int ZEXPORT gzeof OF((gzFile file));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1218 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1219 Returns 1 when EOF has previously been detected reading the given
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1220 input stream, otherwise zero.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1221 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1222
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1223 ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1224 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1225 Returns 1 if file is being read directly without decompression, otherwise
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1226 zero.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1227 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1228
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1229 ZEXTERN int ZEXPORT gzclose OF((gzFile file));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1230 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1231 Flushes all pending output if necessary, closes the compressed file
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1232 and deallocates all the (de)compression state. The return value is the zlib
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1233 error number (see function gzerror below).
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1234 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1235
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1236 ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1237 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1238 Returns the error message for the last error which occurred on the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1239 given compressed file. errnum is set to zlib error number. If an
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1240 error occurred in the file system and not in the compression library,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1241 errnum is set to Z_ERRNO and the application may consult errno
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1242 to get the exact error code.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1243 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1244
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1245 ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1246 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1247 Clears the error and end-of-file flags for file. This is analogous to the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1248 clearerr() function in stdio. This is useful for continuing to read a gzip
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1249 file that is being written concurrently.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1250 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1251
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1252 /* checksum functions */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1253
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1254 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1255 These functions are not related to compression but are exported
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1256 anyway because they might be useful in applications using the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1257 compression library.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1258 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1259
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1260 ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1261 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1262 Update a running Adler-32 checksum with the bytes buf[0..len-1] and
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1263 return the updated checksum. If buf is NULL, this function returns
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1264 the required initial value for the checksum.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1265 An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1266 much faster. Usage example:
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1267
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1268 uLong adler = adler32(0L, Z_NULL, 0);
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1269
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1270 while (read_buffer(buffer, length) != EOF) {
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1271 adler = adler32(adler, buffer, length);
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1272 }
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1273 if (adler != original_adler) error();
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1274 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1275
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1276 ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1277 z_off_t len2));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1278 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1279 Combine two Adler-32 checksums into one. For two sequences of bytes, seq1
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1280 and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1281 each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1282 seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1283 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1284
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1285 ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1286 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1287 Update a running CRC-32 with the bytes buf[0..len-1] and return the
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1288 updated CRC-32. If buf is NULL, this function returns the required initial
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1289 value for the for the crc. Pre- and post-conditioning (one's complement) is
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1290 performed within this function so it shouldn't be done by the application.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1291 Usage example:
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1292
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1293 uLong crc = crc32(0L, Z_NULL, 0);
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1294
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1295 while (read_buffer(buffer, length) != EOF) {
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1296 crc = crc32(crc, buffer, length);
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1297 }
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1298 if (crc != original_crc) error();
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1299 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1300
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1301 ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1302
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1303 /*
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1304 Combine two CRC-32 check values into one. For two sequences of bytes,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1305 seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1306 calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1307 check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1308 len2.
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1309 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1310
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1311
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1312 /* various hacks, don't look :) */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1313
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1314 /* deflateInit and inflateInit are macros to allow checking the zlib version
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1315 * and the compiler's view of z_stream:
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1316 */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1317 ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1318 const char *version, int stream_size));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1319 ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1320 const char *version, int stream_size));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1321 ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1322 int windowBits, int memLevel,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1323 int strategy, const char *version,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1324 int stream_size));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1325 ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1326 const char *version, int stream_size));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1327 ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1328 unsigned char FAR *window,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1329 const char *version,
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1330 int stream_size));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1331 #define deflateInit(strm, level) \
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1332 deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1333 #define inflateInit(strm) \
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1334 inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream))
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1335 #define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1336 deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1337 (strategy), ZLIB_VERSION, sizeof(z_stream))
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1338 #define inflateInit2(strm, windowBits) \
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1339 inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1340 #define inflateBackInit(strm, windowBits, window) \
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1341 inflateBackInit_((strm), (windowBits), (window), \
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1342 ZLIB_VERSION, sizeof(z_stream))
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1343
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1344
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1345 #if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1346 struct internal_state {int dummy;}; /* hack for buggy compilers */
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1347 #endif
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1348
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1349 ZEXTERN const char * ZEXPORT zError OF((int));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1350 ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp z));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1351 ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void));
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1352
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1353 #ifdef __cplusplus
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1354 }
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1355 #endif
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1356
903fc43d6227 Uploaded
lsong10
parents:
diff changeset
1357 #endif /* ZLIB_H */