]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - include/bzlib.h
Patch by Yuli Barcohen, 14 Aug 2003:
[karo-tx-uboot.git] / include / bzlib.h
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
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
184 typedef void BZFILE;
185
186 BZ_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
195 BZ_EXTERN void BZ_API(BZ2_bzReadClose) (
196       int*    bzerror,
197       BZFILE* b
198    );
199
200 BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) (
201       int*    bzerror,
202       BZFILE* b,
203       void**  unused,
204       int*    nUnused
205    );
206
207 BZ_EXTERN int BZ_API(BZ2_bzRead) (
208       int*    bzerror,
209       BZFILE* b,
210       void*   buf,
211       int     len
212    );
213
214 BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) (
215       int*  bzerror,
216       FILE* f,
217       int   blockSize100k,
218       int   verbosity,
219       int   workFactor
220    );
221
222 BZ_EXTERN void BZ_API(BZ2_bzWrite) (
223       int*    bzerror,
224       BZFILE* b,
225       void*   buf,
226       int     len
227    );
228
229 BZ_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
237 BZ_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
251 BZ_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
261 BZ_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
281 BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) (
282       void
283    );
284
285 #ifndef BZ_NO_STDIO
286 BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) (
287       const char *path,
288       const char *mode
289    );
290
291 BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) (
292       int        fd,
293       const char *mode
294    );
295
296 BZ_EXTERN int BZ_API(BZ2_bzread) (
297       BZFILE* b,
298       void* buf,
299       int len
300    );
301
302 BZ_EXTERN int BZ_API(BZ2_bzwrite) (
303       BZFILE* b,
304       void*   buf,
305       int     len
306    );
307
308 BZ_EXTERN int BZ_API(BZ2_bzflush) (
309       BZFILE* b
310    );
311
312 BZ_EXTERN void BZ_API(BZ2_bzclose) (
313       BZFILE* b
314    );
315
316 BZ_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 /*-------------------------------------------------------------*/