Line data Source code
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 0 : #define BZ_RUN 0
30 0 : #define BZ_FLUSH 1
31 0 : #define BZ_FINISH 2
32 :
33 0 : #define BZ_OK 0
34 0 : #define BZ_RUN_OK 1
35 0 : #define BZ_FLUSH_OK 2
36 0 : #define BZ_FINISH_OK 3
37 0 : #define BZ_STREAM_END 4
38 0 : #define BZ_SEQUENCE_ERROR (-1)
39 0 : #define BZ_PARAM_ERROR (-2)
40 0 : #define BZ_MEM_ERROR (-3)
41 0 : #define BZ_DATA_ERROR (-4)
42 : #define BZ_DATA_ERROR_MAGIC (-5)
43 : #define BZ_IO_ERROR (-6)
44 0 : #define BZ_UNEXPECTED_EOF (-7)
45 0 : #define BZ_OUTBUFF_FULL (-8)
46 0 : #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 0 : #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 : /*-------------------------------------------------------------*/
|