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 |
26 | extern "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 | |
48 | typedef |
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 | |
100 | BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( |
101 | bz_stream* strm, |
102 | int blockSize100k, |
103 | int verbosity, |
104 | int workFactor |
105 | ); |
106 | |
107 | BZ_EXTERN int BZ_API(BZ2_bzCompress) ( |
108 | bz_stream* strm, |
109 | int action |
110 | ); |
111 | |
112 | BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( |
113 | bz_stream* strm |
114 | ); |
115 | |
116 | BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( |
117 | bz_stream *strm, |
118 | int verbosity, |
119 | int small |
120 | ); |
121 | |
122 | BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( |
123 | bz_stream* strm |
124 | ); |
125 | |
126 | BZ_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 | |
137 | typedef void BZFILE; |
138 | |
139 | BZ_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 | |
148 | BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( |
149 | int* bzerror, |
150 | BZFILE* b |
151 | ); |
152 | |
153 | BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( |
154 | int* bzerror, |
155 | BZFILE* b, |
156 | void** unused, |
157 | int* nUnused |
158 | ); |
159 | |
160 | BZ_EXTERN int BZ_API(BZ2_bzRead) ( |
161 | int* bzerror, |
162 | BZFILE* b, |
163 | void* buf, |
164 | int len |
165 | ); |
166 | |
167 | BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( |
168 | int* bzerror, |
169 | FILE* f, |
170 | int blockSize100k, |
171 | int verbosity, |
172 | int workFactor |
173 | ); |
174 | |
175 | BZ_EXTERN void BZ_API(BZ2_bzWrite) ( |
176 | int* bzerror, |
177 | BZFILE* b, |
178 | void* buf, |
179 | int len |
180 | ); |
181 | |
182 | BZ_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 | |
190 | BZ_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 | |
204 | BZ_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 | |
214 | BZ_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 | |
233 | BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( |
234 | void |
235 | ); |
236 | |
237 | #ifndef BZ_NO_STDIO |
238 | BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( |
239 | const char *path, |
240 | const char *mode |
241 | ); |
242 | |
243 | BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( |
244 | int fd, |
245 | const char *mode |
246 | ); |
247 | |
248 | BZ_EXTERN int BZ_API(BZ2_bzread) ( |
249 | BZFILE* b, |
250 | void* buf, |
251 | int len |
252 | ); |
253 | |
254 | BZ_EXTERN int BZ_API(BZ2_bzwrite) ( |
255 | BZFILE* b, |
256 | void* buf, |
257 | int len |
258 | ); |
259 | |
260 | BZ_EXTERN int BZ_API(BZ2_bzflush) ( |
261 | BZFILE* b |
262 | ); |
263 | |
264 | BZ_EXTERN void BZ_API(BZ2_bzclose) ( |
265 | BZFILE* b |
266 | ); |
267 | |
268 | BZ_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 | |