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