xref: /titanic_44/usr/src/common/bzip2/bzlib.h (revision ca3e8d88e8c867355e441fbc914c52e7416fc537)
1*ca3e8d88SDave Plauger 
2*ca3e8d88SDave Plauger /*-------------------------------------------------------------*/
3*ca3e8d88SDave Plauger /*--- Public header file for the library.                   ---*/
4*ca3e8d88SDave Plauger /*---                                               bzlib.h ---*/
5*ca3e8d88SDave Plauger /*-------------------------------------------------------------*/
6*ca3e8d88SDave Plauger 
7*ca3e8d88SDave Plauger /* ------------------------------------------------------------------
8*ca3e8d88SDave Plauger    This file is part of bzip2/libbzip2, a program and library for
9*ca3e8d88SDave Plauger    lossless, block-sorting data compression.
10*ca3e8d88SDave Plauger 
11*ca3e8d88SDave Plauger    bzip2/libbzip2 version 1.0.5 of 10 December 2007
12*ca3e8d88SDave Plauger    Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
13*ca3e8d88SDave Plauger 
14*ca3e8d88SDave Plauger    Please read the WARNING, DISCLAIMER and PATENTS sections in the
15*ca3e8d88SDave Plauger    README file.
16*ca3e8d88SDave Plauger 
17*ca3e8d88SDave Plauger    This program is released under the terms of the license contained
18*ca3e8d88SDave Plauger    in the file LICENSE.
19*ca3e8d88SDave Plauger    ------------------------------------------------------------------ */
20*ca3e8d88SDave Plauger 
21*ca3e8d88SDave Plauger #ifndef _BZLIB_H
22*ca3e8d88SDave Plauger #define _BZLIB_H
23*ca3e8d88SDave Plauger 
24*ca3e8d88SDave Plauger #ifdef _KERNEL
25*ca3e8d88SDave Plauger #define	BZ_NO_STDIO
26*ca3e8d88SDave Plauger #endif
27*ca3e8d88SDave Plauger 
28*ca3e8d88SDave Plauger #ifdef __cplusplus
29*ca3e8d88SDave Plauger extern "C" {
30*ca3e8d88SDave Plauger #endif
31*ca3e8d88SDave Plauger 
32*ca3e8d88SDave Plauger #define BZ_RUN               0
33*ca3e8d88SDave Plauger #define BZ_FLUSH             1
34*ca3e8d88SDave Plauger #define BZ_FINISH            2
35*ca3e8d88SDave Plauger 
36*ca3e8d88SDave Plauger #define BZ_OK                0
37*ca3e8d88SDave Plauger #define BZ_RUN_OK            1
38*ca3e8d88SDave Plauger #define BZ_FLUSH_OK          2
39*ca3e8d88SDave Plauger #define BZ_FINISH_OK         3
40*ca3e8d88SDave Plauger #define BZ_STREAM_END        4
41*ca3e8d88SDave Plauger #define BZ_SEQUENCE_ERROR    (-1)
42*ca3e8d88SDave Plauger #define BZ_PARAM_ERROR       (-2)
43*ca3e8d88SDave Plauger #define BZ_MEM_ERROR         (-3)
44*ca3e8d88SDave Plauger #define BZ_DATA_ERROR        (-4)
45*ca3e8d88SDave Plauger #define BZ_DATA_ERROR_MAGIC  (-5)
46*ca3e8d88SDave Plauger #define BZ_IO_ERROR          (-6)
47*ca3e8d88SDave Plauger #define BZ_UNEXPECTED_EOF    (-7)
48*ca3e8d88SDave Plauger #define BZ_OUTBUFF_FULL      (-8)
49*ca3e8d88SDave Plauger #define BZ_CONFIG_ERROR      (-9)
50*ca3e8d88SDave Plauger 
51*ca3e8d88SDave Plauger typedef
52*ca3e8d88SDave Plauger    struct {
53*ca3e8d88SDave Plauger       char *next_in;
54*ca3e8d88SDave Plauger       unsigned int avail_in;
55*ca3e8d88SDave Plauger       unsigned int total_in_lo32;
56*ca3e8d88SDave Plauger       unsigned int total_in_hi32;
57*ca3e8d88SDave Plauger 
58*ca3e8d88SDave Plauger       char *next_out;
59*ca3e8d88SDave Plauger       unsigned int avail_out;
60*ca3e8d88SDave Plauger       unsigned int total_out_lo32;
61*ca3e8d88SDave Plauger       unsigned int total_out_hi32;
62*ca3e8d88SDave Plauger 
63*ca3e8d88SDave Plauger       void *state;
64*ca3e8d88SDave Plauger 
65*ca3e8d88SDave Plauger       void *(*bzalloc)(void *,int,int);
66*ca3e8d88SDave Plauger       void (*bzfree)(void *,void *);
67*ca3e8d88SDave Plauger       void *opaque;
68*ca3e8d88SDave Plauger    }
69*ca3e8d88SDave Plauger    bz_stream;
70*ca3e8d88SDave Plauger 
71*ca3e8d88SDave Plauger 
72*ca3e8d88SDave Plauger #ifndef BZ_IMPORT
73*ca3e8d88SDave Plauger #define BZ_EXPORT
74*ca3e8d88SDave Plauger #endif
75*ca3e8d88SDave Plauger 
76*ca3e8d88SDave Plauger #ifndef BZ_NO_STDIO
77*ca3e8d88SDave Plauger /* Need a definitition for FILE */
78*ca3e8d88SDave Plauger #include <stdio.h>
79*ca3e8d88SDave Plauger #endif
80*ca3e8d88SDave Plauger 
81*ca3e8d88SDave Plauger #ifdef _WIN32
82*ca3e8d88SDave Plauger #   include <windows.h>
83*ca3e8d88SDave Plauger #   ifdef small
84*ca3e8d88SDave Plauger       /* windows.h define small to char */
85*ca3e8d88SDave Plauger #      undef small
86*ca3e8d88SDave Plauger #   endif
87*ca3e8d88SDave Plauger #   ifdef BZ_EXPORT
88*ca3e8d88SDave Plauger #   define BZ_API(func) WINAPI func
89*ca3e8d88SDave Plauger #   define BZ_EXTERN extern
90*ca3e8d88SDave Plauger #   else
91*ca3e8d88SDave Plauger    /* import windows dll dynamically */
92*ca3e8d88SDave Plauger #   define BZ_API(func) (WINAPI * func)
93*ca3e8d88SDave Plauger #   define BZ_EXTERN
94*ca3e8d88SDave Plauger #   endif
95*ca3e8d88SDave Plauger #else
96*ca3e8d88SDave Plauger #   define BZ_API(func) func
97*ca3e8d88SDave Plauger #   define BZ_EXTERN extern
98*ca3e8d88SDave Plauger #endif
99*ca3e8d88SDave Plauger 
100*ca3e8d88SDave Plauger 
101*ca3e8d88SDave Plauger /*-- Core (low-level) library functions --*/
102*ca3e8d88SDave Plauger 
103*ca3e8d88SDave Plauger #define	BZ2_BZALLOC_ALIGN	(64)
104*ca3e8d88SDave Plauger 
105*ca3e8d88SDave Plauger BZ_EXTERN int BZ_API(BZ2_bzCompressInit) (
106*ca3e8d88SDave Plauger       bz_stream* strm,
107*ca3e8d88SDave Plauger       int        blockSize100k,
108*ca3e8d88SDave Plauger       int        verbosity,
109*ca3e8d88SDave Plauger       int        workFactor
110*ca3e8d88SDave Plauger    );
111*ca3e8d88SDave Plauger 
112*ca3e8d88SDave Plauger BZ_EXTERN int  BZ_API(BZ2_bzCompressInitSize) (
113*ca3e8d88SDave Plauger       int        blockSize100k
114*ca3e8d88SDave Plauger    );
115*ca3e8d88SDave Plauger 
116*ca3e8d88SDave Plauger BZ_EXTERN int BZ_API(BZ2_bzCompressReset) (
117*ca3e8d88SDave Plauger       bz_stream* strm
118*ca3e8d88SDave Plauger    );
119*ca3e8d88SDave Plauger 
120*ca3e8d88SDave Plauger BZ_EXTERN int BZ_API(BZ2_bzCompress) (
121*ca3e8d88SDave Plauger       bz_stream* strm,
122*ca3e8d88SDave Plauger       int action
123*ca3e8d88SDave Plauger    );
124*ca3e8d88SDave Plauger 
125*ca3e8d88SDave Plauger BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) (
126*ca3e8d88SDave Plauger       bz_stream* strm
127*ca3e8d88SDave Plauger    );
128*ca3e8d88SDave Plauger 
129*ca3e8d88SDave Plauger BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) (
130*ca3e8d88SDave Plauger       bz_stream *strm,
131*ca3e8d88SDave Plauger       int       verbosity,
132*ca3e8d88SDave Plauger       int       small
133*ca3e8d88SDave Plauger    );
134*ca3e8d88SDave Plauger 
135*ca3e8d88SDave Plauger BZ_EXTERN int BZ_API(BZ2_bzDecompressReset) (
136*ca3e8d88SDave Plauger       bz_stream* strm
137*ca3e8d88SDave Plauger    );
138*ca3e8d88SDave Plauger 
139*ca3e8d88SDave Plauger BZ_EXTERN int BZ_API(BZ2_bzDecompress) (
140*ca3e8d88SDave Plauger       bz_stream* strm
141*ca3e8d88SDave Plauger    );
142*ca3e8d88SDave Plauger 
143*ca3e8d88SDave Plauger BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) (
144*ca3e8d88SDave Plauger       bz_stream *strm
145*ca3e8d88SDave Plauger    );
146*ca3e8d88SDave Plauger 
147*ca3e8d88SDave Plauger BZ_EXTERN const char * BZ_API(BZ2_bzErrorString) (
148*ca3e8d88SDave Plauger       int error_code
149*ca3e8d88SDave Plauger    );
150*ca3e8d88SDave Plauger 
151*ca3e8d88SDave Plauger 
152*ca3e8d88SDave Plauger 
153*ca3e8d88SDave Plauger /*-- High(er) level library functions --*/
154*ca3e8d88SDave Plauger 
155*ca3e8d88SDave Plauger #ifndef BZ_NO_STDIO
156*ca3e8d88SDave Plauger #define BZ_MAX_UNUSED 5000
157*ca3e8d88SDave Plauger 
158*ca3e8d88SDave Plauger typedef void BZFILE;
159*ca3e8d88SDave Plauger 
160*ca3e8d88SDave Plauger BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) (
161*ca3e8d88SDave Plauger       int*  bzerror,
162*ca3e8d88SDave Plauger       FILE* f,
163*ca3e8d88SDave Plauger       int   verbosity,
164*ca3e8d88SDave Plauger       int   small,
165*ca3e8d88SDave Plauger       void* unused,
166*ca3e8d88SDave Plauger       int   nUnused
167*ca3e8d88SDave Plauger    );
168*ca3e8d88SDave Plauger 
169*ca3e8d88SDave Plauger BZ_EXTERN void BZ_API(BZ2_bzReadClose) (
170*ca3e8d88SDave Plauger       int*    bzerror,
171*ca3e8d88SDave Plauger       BZFILE* b
172*ca3e8d88SDave Plauger    );
173*ca3e8d88SDave Plauger 
174*ca3e8d88SDave Plauger BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) (
175*ca3e8d88SDave Plauger       int*    bzerror,
176*ca3e8d88SDave Plauger       BZFILE* b,
177*ca3e8d88SDave Plauger       void**  unused,
178*ca3e8d88SDave Plauger       int*    nUnused
179*ca3e8d88SDave Plauger    );
180*ca3e8d88SDave Plauger 
181*ca3e8d88SDave Plauger BZ_EXTERN int BZ_API(BZ2_bzRead) (
182*ca3e8d88SDave Plauger       int*    bzerror,
183*ca3e8d88SDave Plauger       BZFILE* b,
184*ca3e8d88SDave Plauger       void*   buf,
185*ca3e8d88SDave Plauger       int     len
186*ca3e8d88SDave Plauger    );
187*ca3e8d88SDave Plauger 
188*ca3e8d88SDave Plauger BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) (
189*ca3e8d88SDave Plauger       int*  bzerror,
190*ca3e8d88SDave Plauger       FILE* f,
191*ca3e8d88SDave Plauger       int   blockSize100k,
192*ca3e8d88SDave Plauger       int   verbosity,
193*ca3e8d88SDave Plauger       int   workFactor
194*ca3e8d88SDave Plauger    );
195*ca3e8d88SDave Plauger 
196*ca3e8d88SDave Plauger BZ_EXTERN void BZ_API(BZ2_bzWrite) (
197*ca3e8d88SDave Plauger       int*    bzerror,
198*ca3e8d88SDave Plauger       BZFILE* b,
199*ca3e8d88SDave Plauger       void*   buf,
200*ca3e8d88SDave Plauger       int     len
201*ca3e8d88SDave Plauger    );
202*ca3e8d88SDave Plauger 
203*ca3e8d88SDave Plauger BZ_EXTERN void BZ_API(BZ2_bzWriteClose) (
204*ca3e8d88SDave Plauger       int*          bzerror,
205*ca3e8d88SDave Plauger       BZFILE*       b,
206*ca3e8d88SDave Plauger       int           abandon,
207*ca3e8d88SDave Plauger       unsigned int* nbytes_in,
208*ca3e8d88SDave Plauger       unsigned int* nbytes_out
209*ca3e8d88SDave Plauger    );
210*ca3e8d88SDave Plauger 
211*ca3e8d88SDave Plauger BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) (
212*ca3e8d88SDave Plauger       int*          bzerror,
213*ca3e8d88SDave Plauger       BZFILE*       b,
214*ca3e8d88SDave Plauger       int           abandon,
215*ca3e8d88SDave Plauger       unsigned int* nbytes_in_lo32,
216*ca3e8d88SDave Plauger       unsigned int* nbytes_in_hi32,
217*ca3e8d88SDave Plauger       unsigned int* nbytes_out_lo32,
218*ca3e8d88SDave Plauger       unsigned int* nbytes_out_hi32
219*ca3e8d88SDave Plauger    );
220*ca3e8d88SDave Plauger #endif
221*ca3e8d88SDave Plauger 
222*ca3e8d88SDave Plauger 
223*ca3e8d88SDave Plauger /*-- Utility functions --*/
224*ca3e8d88SDave Plauger 
225*ca3e8d88SDave Plauger BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) (
226*ca3e8d88SDave Plauger       char*         dest,
227*ca3e8d88SDave Plauger       unsigned int* destLen,
228*ca3e8d88SDave Plauger       char*         source,
229*ca3e8d88SDave Plauger       unsigned int  sourceLen,
230*ca3e8d88SDave Plauger       int           blockSize100k,
231*ca3e8d88SDave Plauger       int           verbosity,
232*ca3e8d88SDave Plauger       int           workFactor
233*ca3e8d88SDave Plauger    );
234*ca3e8d88SDave Plauger 
235*ca3e8d88SDave Plauger BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) (
236*ca3e8d88SDave Plauger       char*         dest,
237*ca3e8d88SDave Plauger       unsigned int* destLen,
238*ca3e8d88SDave Plauger       char*         source,
239*ca3e8d88SDave Plauger       unsigned int  sourceLen,
240*ca3e8d88SDave Plauger       int           small,
241*ca3e8d88SDave Plauger       int           verbosity
242*ca3e8d88SDave Plauger    );
243*ca3e8d88SDave Plauger 
244*ca3e8d88SDave Plauger 
245*ca3e8d88SDave Plauger /*--
246*ca3e8d88SDave Plauger    Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
247*ca3e8d88SDave Plauger    to support better zlib compatibility.
248*ca3e8d88SDave Plauger    This code is not _officially_ part of libbzip2 (yet);
249*ca3e8d88SDave Plauger    I haven't tested it, documented it, or considered the
250*ca3e8d88SDave Plauger    threading-safeness of it.
251*ca3e8d88SDave Plauger    If this code breaks, please contact both Yoshioka and me.
252*ca3e8d88SDave Plauger --*/
253*ca3e8d88SDave Plauger 
254*ca3e8d88SDave Plauger BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) (
255*ca3e8d88SDave Plauger       void
256*ca3e8d88SDave Plauger    );
257*ca3e8d88SDave Plauger 
258*ca3e8d88SDave Plauger #ifndef BZ_NO_STDIO
259*ca3e8d88SDave Plauger BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) (
260*ca3e8d88SDave Plauger       const char *path,
261*ca3e8d88SDave Plauger       const char *mode
262*ca3e8d88SDave Plauger    );
263*ca3e8d88SDave Plauger 
264*ca3e8d88SDave Plauger BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) (
265*ca3e8d88SDave Plauger       int        fd,
266*ca3e8d88SDave Plauger       const char *mode
267*ca3e8d88SDave Plauger    );
268*ca3e8d88SDave Plauger 
269*ca3e8d88SDave Plauger BZ_EXTERN int BZ_API(BZ2_bzread) (
270*ca3e8d88SDave Plauger       BZFILE* b,
271*ca3e8d88SDave Plauger       void* buf,
272*ca3e8d88SDave Plauger       int len
273*ca3e8d88SDave Plauger    );
274*ca3e8d88SDave Plauger 
275*ca3e8d88SDave Plauger BZ_EXTERN int BZ_API(BZ2_bzwrite) (
276*ca3e8d88SDave Plauger       BZFILE* b,
277*ca3e8d88SDave Plauger       void*   buf,
278*ca3e8d88SDave Plauger       int     len
279*ca3e8d88SDave Plauger    );
280*ca3e8d88SDave Plauger 
281*ca3e8d88SDave Plauger BZ_EXTERN int BZ_API(BZ2_bzflush) (
282*ca3e8d88SDave Plauger       BZFILE* b
283*ca3e8d88SDave Plauger    );
284*ca3e8d88SDave Plauger 
285*ca3e8d88SDave Plauger BZ_EXTERN void BZ_API(BZ2_bzclose) (
286*ca3e8d88SDave Plauger       BZFILE* b
287*ca3e8d88SDave Plauger    );
288*ca3e8d88SDave Plauger 
289*ca3e8d88SDave Plauger BZ_EXTERN const char * BZ_API(BZ2_bzerror) (
290*ca3e8d88SDave Plauger       BZFILE *b,
291*ca3e8d88SDave Plauger       int    *errnum
292*ca3e8d88SDave Plauger    );
293*ca3e8d88SDave Plauger #endif
294*ca3e8d88SDave Plauger 
295*ca3e8d88SDave Plauger #ifdef __cplusplus
296*ca3e8d88SDave Plauger }
297*ca3e8d88SDave Plauger #endif
298*ca3e8d88SDave Plauger 
299*ca3e8d88SDave Plauger /*-------------------------------------------------------------*/
300*ca3e8d88SDave Plauger /*--- end                                           bzlib.h ---*/
301*ca3e8d88SDave Plauger /*-------------------------------------------------------------*/
302*ca3e8d88SDave Plauger #endif /* _BZLIB_H */
303