blob: 64f397de93dbf3a4a2d08ac13864c9fe1ae5c4da [file] [log] [blame]
wdenk710e3502003-08-29 20:57:53 +00001/*
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
75extern "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
97typedef
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
144BZ_EXTERN int BZ_API(BZ2_bzCompressInit) (
145 bz_stream* strm,
146 int blockSize100k,
147 int verbosity,
148 int workFactor
149 );
150
151BZ_EXTERN int BZ_API(BZ2_bzCompress) (
152 bz_stream* strm,
153 int action
154 );
155
156BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) (
157 bz_stream* strm
158 );
159
160BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) (
161 bz_stream *strm,
162 int verbosity,
163 int small
164 );
165
166BZ_EXTERN int BZ_API(BZ2_bzDecompress) (
167 bz_stream* strm
168 );
169
170BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) (
171 bz_stream *strm
172 );
173
174
175
176/*-- High(er) level library functions --*/
177
178#ifndef BZ_NO_STDIO
179#define BZ_MAX_UNUSED 5000
180
181/* Need a definitition for FILE */
182#include <stdio.h>
183
184typedef void BZFILE;
185
186BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) (
187 int* bzerror,
188 FILE* f,
189 int verbosity,
190 int small,
191 void* unused,
192 int nUnused
193 );
194
195BZ_EXTERN void BZ_API(BZ2_bzReadClose) (
196 int* bzerror,
197 BZFILE* b
198 );
199
200BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) (
201 int* bzerror,
202 BZFILE* b,
203 void** unused,
204 int* nUnused
205 );
206
207BZ_EXTERN int BZ_API(BZ2_bzRead) (
208 int* bzerror,
209 BZFILE* b,
210 void* buf,
211 int len
212 );
213
214BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) (
215 int* bzerror,
216 FILE* f,
217 int blockSize100k,
218 int verbosity,
219 int workFactor
220 );
221
222BZ_EXTERN void BZ_API(BZ2_bzWrite) (
223 int* bzerror,
224 BZFILE* b,
225 void* buf,
226 int len
227 );
228
229BZ_EXTERN void BZ_API(BZ2_bzWriteClose) (
230 int* bzerror,
231 BZFILE* b,
232 int abandon,
233 unsigned int* nbytes_in,
234 unsigned int* nbytes_out
235 );
236
237BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) (
238 int* bzerror,
239 BZFILE* b,
240 int abandon,
241 unsigned int* nbytes_in_lo32,
242 unsigned int* nbytes_in_hi32,
243 unsigned int* nbytes_out_lo32,
244 unsigned int* nbytes_out_hi32
245 );
246#endif
247
248
249/*-- Utility functions --*/
250
251BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) (
252 char* dest,
253 unsigned int* destLen,
254 char* source,
255 unsigned int sourceLen,
256 int blockSize100k,
257 int verbosity,
258 int workFactor
259 );
260
261BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) (
262 char* dest,
263 unsigned int* destLen,
264 char* source,
265 unsigned int sourceLen,
266 int small,
267 int verbosity
268 );
269
270
271/*--
272 Code contributed by Yoshioka Tsuneo
273 (QWF00133@niftyserve.or.jp/tsuneo-y@is.aist-nara.ac.jp),
274 to support better zlib compatibility.
275 This code is not _officially_ part of libbzip2 (yet);
276 I haven't tested it, documented it, or considered the
277 threading-safeness of it.
278 If this code breaks, please contact both Yoshioka and me.
279--*/
280
281BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) (
282 void
283 );
284
285#ifndef BZ_NO_STDIO
286BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) (
287 const char *path,
288 const char *mode
289 );
290
291BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) (
292 int fd,
293 const char *mode
294 );
295
296BZ_EXTERN int BZ_API(BZ2_bzread) (
297 BZFILE* b,
298 void* buf,
299 int len
300 );
301
302BZ_EXTERN int BZ_API(BZ2_bzwrite) (
303 BZFILE* b,
304 void* buf,
305 int len
306 );
307
308BZ_EXTERN int BZ_API(BZ2_bzflush) (
309 BZFILE* b
310 );
311
312BZ_EXTERN void BZ_API(BZ2_bzclose) (
313 BZFILE* b
314 );
315
316BZ_EXTERN const char * BZ_API(BZ2_bzerror) (
317 BZFILE *b,
318 int *errnum
319 );
320#endif
321
322#ifdef __cplusplus
323}
324#endif
325
326#endif
327
328/*-------------------------------------------------------------*/
329/*--- end bzlib.h ---*/
330/*-------------------------------------------------------------*/