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

source code of include/bzlib.h