blob: 2d864d56b75676600a21750537c4b84e7a1bc1df
1 | /* |
2 | * This file is a modified version of bzlib.h from the bzip2-1.0.2 |
3 | * distribution which can be found at http://sources.redhat.com/bzip2/ |
4 | */ |
5 | |
6 | /*-------------------------------------------------------------*/ |
7 | /*--- Public header file for the library. ---*/ |
8 | /*--- bzlib.h ---*/ |
9 | /*-------------------------------------------------------------*/ |
10 | |
11 | /*-- |
12 | This file is a part of bzip2 and/or libbzip2, a program and |
13 | library for lossless, block-sorting data compression. |
14 | |
15 | Copyright (C) 1996-2002 Julian R Seward. All rights reserved. |
16 | |
17 | Redistribution and use in source and binary forms, with or without |
18 | modification, are permitted provided that the following conditions |
19 | are met: |
20 | |
21 | 1. Redistributions of source code must retain the above copyright |
22 | notice, this list of conditions and the following disclaimer. |
23 | |
24 | 2. The origin of this software must not be misrepresented; you must |
25 | not claim that you wrote the original software. If you use this |
26 | software in a product, an acknowledgment in the product |
27 | documentation would be appreciated but is not required. |
28 | |
29 | 3. Altered source versions must be plainly marked as such, and must |
30 | not be misrepresented as being the original software. |
31 | |
32 | 4. The name of the author may not be used to endorse or promote |
33 | products derived from this software without specific prior written |
34 | permission. |
35 | |
36 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
37 | OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
38 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
39 | ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
40 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
41 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
42 | GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
43 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
44 | WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
45 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
46 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
47 | |
48 | Julian Seward, Cambridge, UK. |
49 | jseward@acm.org |
50 | bzip2/libbzip2 version 1.0 of 21 March 2000 |
51 | |
52 | This program is based on (at least) the work of: |
53 | Mike Burrows |
54 | David Wheeler |
55 | Peter Fenwick |
56 | Alistair Moffat |
57 | Radford Neal |
58 | Ian H. Witten |
59 | Robert Sedgewick |
60 | Jon L. Bentley |
61 | |
62 | For more information on these sources, see the manual. |
63 | --*/ |
64 | |
65 | |
66 | #ifndef _BZLIB_H |
67 | #define _BZLIB_H |
68 | |
69 | /* Configure for U-Boot environment */ |
70 | #define BZ_NO_STDIO |
71 | #define BZ_NO_COMPRESS |
72 | /* End of configuration for U-Boot environment */ |
73 | |
74 | #ifdef __cplusplus |
75 | extern "C" { |
76 | #endif |
77 | |
78 | #define BZ_RUN 0 |
79 | #define BZ_FLUSH 1 |
80 | #define BZ_FINISH 2 |
81 | |
82 | #define BZ_OK 0 |
83 | #define BZ_RUN_OK 1 |
84 | #define BZ_FLUSH_OK 2 |
85 | #define BZ_FINISH_OK 3 |
86 | #define BZ_STREAM_END 4 |
87 | #define BZ_SEQUENCE_ERROR (-1) |
88 | #define BZ_PARAM_ERROR (-2) |
89 | #define BZ_MEM_ERROR (-3) |
90 | #define BZ_DATA_ERROR (-4) |
91 | #define BZ_DATA_ERROR_MAGIC (-5) |
92 | #define BZ_IO_ERROR (-6) |
93 | #define BZ_UNEXPECTED_EOF (-7) |
94 | #define BZ_OUTBUFF_FULL (-8) |
95 | #define BZ_CONFIG_ERROR (-9) |
96 | |
97 | typedef |
98 | struct { |
99 | char *next_in; |
100 | unsigned int avail_in; |
101 | unsigned int total_in_lo32; |
102 | unsigned int total_in_hi32; |
103 | |
104 | char *next_out; |
105 | unsigned int avail_out; |
106 | unsigned int total_out_lo32; |
107 | unsigned int total_out_hi32; |
108 | |
109 | void *state; |
110 | |
111 | void *(*bzalloc)(void *,int,int); |
112 | void (*bzfree)(void *,void *); |
113 | void *opaque; |
114 | } |
115 | bz_stream; |
116 | |
117 | |
118 | #ifndef BZ_IMPORT |
119 | #define BZ_EXPORT |
120 | #endif |
121 | |
122 | #ifdef _WIN32 |
123 | # include <windows.h> |
124 | # ifdef small |
125 | /* windows.h define small to char */ |
126 | # undef small |
127 | # endif |
128 | # ifdef BZ_EXPORT |
129 | # define BZ_API(func) WINAPI func |
130 | # define BZ_EXTERN extern |
131 | # else |
132 | /* import windows dll dynamically */ |
133 | # define BZ_API(func) (WINAPI * func) |
134 | # define BZ_EXTERN |
135 | # endif |
136 | #else |
137 | # define BZ_API(func) func |
138 | # define BZ_EXTERN extern |
139 | #endif |
140 | |
141 | |
142 | /*-- Core (low-level) library functions --*/ |
143 | |
144 | BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( |
145 | bz_stream* strm, |
146 | int blockSize100k, |
147 | int verbosity, |
148 | int workFactor |
149 | ); |
150 | |
151 | BZ_EXTERN int BZ_API(BZ2_bzCompress) ( |
152 | bz_stream* strm, |
153 | int action |
154 | ); |
155 | |
156 | BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( |
157 | bz_stream* strm |
158 | ); |
159 | |
160 | BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( |
161 | bz_stream *strm, |
162 | int verbosity, |
163 | int small |
164 | ); |
165 | |
166 | BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( |
167 | bz_stream* strm |
168 | ); |
169 | |
170 | BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( |
171 | bz_stream *strm |
172 | ); |
173 | |
174 | |
175 | /*-- High(er) level library functions --*/ |
176 | |
177 | #ifndef BZ_NO_STDIO |
178 | #define BZ_MAX_UNUSED 5000 |
179 | |
180 | /* Need a definitition for FILE */ |
181 | #include <stdio.h> |
182 | |
183 | typedef void BZFILE; |
184 | |
185 | BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( |
186 | int* bzerror, |
187 | FILE* f, |
188 | int verbosity, |
189 | int small, |
190 | void* unused, |
191 | int nUnused |
192 | ); |
193 | |
194 | BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( |
195 | int* bzerror, |
196 | BZFILE* b |
197 | ); |
198 | |
199 | BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( |
200 | int* bzerror, |
201 | BZFILE* b, |
202 | void** unused, |
203 | int* nUnused |
204 | ); |
205 | |
206 | BZ_EXTERN int BZ_API(BZ2_bzRead) ( |
207 | int* bzerror, |
208 | BZFILE* b, |
209 | void* buf, |
210 | int len |
211 | ); |
212 | |
213 | BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( |
214 | int* bzerror, |
215 | FILE* f, |
216 | int blockSize100k, |
217 | int verbosity, |
218 | int workFactor |
219 | ); |
220 | |
221 | BZ_EXTERN void BZ_API(BZ2_bzWrite) ( |
222 | int* bzerror, |
223 | BZFILE* b, |
224 | void* buf, |
225 | int len |
226 | ); |
227 | |
228 | BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( |
229 | int* bzerror, |
230 | BZFILE* b, |
231 | int abandon, |
232 | unsigned int* nbytes_in, |
233 | unsigned int* nbytes_out |
234 | ); |
235 | |
236 | BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( |
237 | int* bzerror, |
238 | BZFILE* b, |
239 | int abandon, |
240 | unsigned int* nbytes_in_lo32, |
241 | unsigned int* nbytes_in_hi32, |
242 | unsigned int* nbytes_out_lo32, |
243 | unsigned int* nbytes_out_hi32 |
244 | ); |
245 | #endif |
246 | |
247 | |
248 | /*-- Utility functions --*/ |
249 | |
250 | BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( |
251 | char* dest, |
252 | unsigned int* destLen, |
253 | char* source, |
254 | unsigned int sourceLen, |
255 | int blockSize100k, |
256 | int verbosity, |
257 | int workFactor |
258 | ); |
259 | |
260 | BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( |
261 | char* dest, |
262 | unsigned int* destLen, |
263 | char* source, |
264 | unsigned int sourceLen, |
265 | int small, |
266 | int verbosity |
267 | ); |
268 | |
269 | |
270 | /*-- |
271 | Code contributed by Yoshioka Tsuneo |
272 | (QWF00133@niftyserve.or.jp/tsuneo-y@is.aist-nara.ac.jp), |
273 | to support better zlib compatibility. |
274 | This code is not _officially_ part of libbzip2 (yet); |
275 | I haven't tested it, documented it, or considered the |
276 | threading-safeness of it. |
277 | If this code breaks, please contact both Yoshioka and me. |
278 | --*/ |
279 | |
280 | BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( |
281 | void |
282 | ); |
283 | |
284 | #ifndef BZ_NO_STDIO |
285 | BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( |
286 | const char *path, |
287 | const char *mode |
288 | ); |
289 | |
290 | BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( |
291 | int fd, |
292 | const char *mode |
293 | ); |
294 | |
295 | BZ_EXTERN int BZ_API(BZ2_bzread) ( |
296 | BZFILE* b, |
297 | void* buf, |
298 | int len |
299 | ); |
300 | |
301 | BZ_EXTERN int BZ_API(BZ2_bzwrite) ( |
302 | BZFILE* b, |
303 | void* buf, |
304 | int len |
305 | ); |
306 | |
307 | BZ_EXTERN int BZ_API(BZ2_bzflush) ( |
308 | BZFILE* b |
309 | ); |
310 | |
311 | BZ_EXTERN void BZ_API(BZ2_bzclose) ( |
312 | BZFILE* b |
313 | ); |
314 | |
315 | BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( |
316 | BZFILE *b, |
317 | int *errnum |
318 | ); |
319 | #endif |
320 | |
321 | #ifdef __cplusplus |
322 | } |
323 | #endif |
324 | |
325 | #endif |
326 | |
327 | /*-------------------------------------------------------------*/ |
328 | /*--- end bzlib.h ---*/ |
329 | /*-------------------------------------------------------------*/ |
330 |