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