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