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