Merge with /home/wd/git/u-boot/mailing-list/Haavard_Skinnemoen
[platform/kernel/u-boot.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 /*-- 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 /*-------------------------------------------------------------*/