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