Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/lib/libbz/bzlib.h
1808 views
1
#pragma prototyped
2
/*-------------------------------------------------------------*/
3
/*--- Public header file for the library. ---*/
4
/*--- bzlib.h ---*/
5
/*-------------------------------------------------------------*/
6
7
/*--
8
This file is a part of bzip2 and/or libbzip2, a program and
9
library for lossless, block-sorting data compression.
10
11
Copyright (C) 1996-1998 Julian R Seward. All rights reserved.
12
13
Redistribution and use in source and binary forms, with or without
14
modification, are permitted provided that the following conditions
15
are met:
16
17
1. Redistributions of source code must retain the above copyright
18
notice, this list of conditions and the following disclaimer.
19
20
2. The origin of this software must not be misrepresented; you must
21
not claim that you wrote the original software. If you use this
22
software in a product, an acknowledgment in the product
23
documentation would be appreciated but is not required.
24
25
3. Altered source versions must be plainly marked as such, and must
26
not be misrepresented as being the original software.
27
28
4. The name of the author may not be used to endorse or promote
29
products derived from this software without specific prior written
30
permission.
31
32
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
33
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
34
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
35
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
36
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
38
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
39
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
40
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
41
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
42
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
43
44
Julian Seward, Guildford, Surrey, UK.
45
[email protected]
46
bzip2/libbzip2 version 0.9.0c of 18 October 1998
47
48
This program is based on (at least) the work of:
49
Mike Burrows
50
David Wheeler
51
Peter Fenwick
52
Alistair Moffat
53
Radford Neal
54
Ian H. Witten
55
Robert Sedgewick
56
Jon L. Bentley
57
58
For more information on these sources, see the manual.
59
--*/
60
61
62
#ifndef _BZLIB_H
63
#define _BZLIB_H
64
65
#define BZ_RUN 0
66
#define BZ_FLUSH 1
67
#define BZ_FINISH 2
68
69
#define BZ_OK 0
70
#define BZ_RUN_OK 1
71
#define BZ_FLUSH_OK 2
72
#define BZ_FINISH_OK 3
73
#define BZ_STREAM_END 4
74
#define BZ_SEQUENCE_ERROR (-1)
75
#define BZ_PARAM_ERROR (-2)
76
#define BZ_MEM_ERROR (-3)
77
#define BZ_DATA_ERROR (-4)
78
#define BZ_DATA_ERROR_MAGIC (-5)
79
#define BZ_IO_ERROR (-6)
80
#define BZ_UNEXPECTED_EOF (-7)
81
#define BZ_OUTBUFF_FULL (-8)
82
83
typedef
84
struct {
85
char *next_in;
86
unsigned int avail_in;
87
unsigned int total_in;
88
89
char *next_out;
90
unsigned int avail_out;
91
unsigned int total_out;
92
93
void *state;
94
95
void *(*bzalloc)(void *,int,int);
96
void (*bzfree)(void *,void *);
97
void *opaque;
98
}
99
bz_stream;
100
101
102
#if _PACKAGE_ast
103
#include <ast_std.h>
104
#else
105
#if !defined(_WINIX) && (_UWIN || __CYGWIN__ || __EMX__)
106
#define _WINIX 1
107
#endif
108
#endif
109
110
/*---------------------------------------------*/
111
/*--
112
Generic 32-bit Unix.
113
Also works on 64-bit Unix boxes.
114
--*/
115
#if !_WIN32 || _WINIX
116
#define BZ_UNIX 1
117
#endif
118
119
/*--
120
Win32, as seen by Jacob Navia's excellent
121
port of (Chris Fraser & David Hanson)'s excellent
122
lcc compiler.
123
--*/
124
#if _WIN32 && !_WINIX
125
#define BZ_LCCWIN32 1
126
#define BZ_UNIX 0
127
#else
128
#define BZ_LCCWIN32 0
129
#endif
130
131
#include <stdio.h>
132
133
#if _BLD_bz
134
135
#if defined(__EXPORT__)
136
# define BZ_API(func) func
137
# define BZ_EXTERN __EXPORT__
138
#else
139
# define BZ_API(func) func
140
# define BZ_EXTERN extern
141
#endif
142
143
#else
144
145
#if _WIN32 && !_WINIX
146
# include <windows.h>
147
# ifdef small
148
/* windows.h define small to char */
149
# undef small
150
# endif
151
# ifdef BZ_EXPORT
152
# define BZ_API(func) WINAPI func
153
# define BZ_EXTERN extern
154
# else
155
/* import windows dll dynamically */
156
# define BZ_API(func) (WINAPI * func)
157
# define BZ_EXTERN
158
# endif
159
#else
160
# define BZ_API(func) func
161
# define BZ_EXTERN extern
162
#endif
163
164
#endif
165
166
167
/*-- Core (low-level) library functions --*/
168
169
BZ_EXTERN int BZ_API(bzCompressInit) (
170
bz_stream* strm,
171
int blockSize100k,
172
int verbosity,
173
int workFactor
174
);
175
176
BZ_EXTERN int BZ_API(bzCompress) (
177
bz_stream* strm,
178
int action
179
);
180
181
BZ_EXTERN int BZ_API(bzCompressEnd) (
182
bz_stream* strm
183
);
184
185
BZ_EXTERN int BZ_API(bzDecompressInit) (
186
bz_stream *strm,
187
int verbosity,
188
int small
189
);
190
191
BZ_EXTERN int BZ_API(bzDecompress) (
192
bz_stream* strm
193
);
194
195
BZ_EXTERN int BZ_API(bzDecompressEnd) (
196
bz_stream *strm
197
);
198
199
200
201
/*-- High(er) level library functions --*/
202
203
#ifndef BZ_NO_STDIO
204
#define BZ_MAX_UNUSED 5000
205
206
typedef void BZFILE;
207
208
typedef BZFILE Bz_t;
209
210
BZ_EXTERN BZFILE* BZ_API(bzReadOpen) (
211
int* bzerror,
212
FILE* f,
213
int verbosity,
214
int small,
215
void* unused,
216
int nUnused
217
);
218
219
BZ_EXTERN void BZ_API(bzReadClose) (
220
int* bzerror,
221
BZFILE* b
222
);
223
224
BZ_EXTERN void BZ_API(bzReadGetUnused) (
225
int* bzerror,
226
BZFILE* b,
227
void* vUnused,
228
int* nUnused
229
);
230
231
BZ_EXTERN int BZ_API(bzRead) (
232
int* bzerror,
233
BZFILE* b,
234
void* buf,
235
int len
236
);
237
238
BZ_EXTERN BZFILE* BZ_API(bzWriteOpen) (
239
int* bzerror,
240
FILE* f,
241
int blockSize100k,
242
int verbosity,
243
int workFactor
244
);
245
246
BZ_EXTERN void BZ_API(bzWrite) (
247
int* bzerror,
248
BZFILE* b,
249
void* buf,
250
int len
251
);
252
253
BZ_EXTERN void BZ_API(bzWriteClose) (
254
int* bzerror,
255
BZFILE* b,
256
int abandon,
257
unsigned int* nbytes_in,
258
unsigned int* nbytes_out
259
);
260
#endif
261
262
263
/*-- Utility functions --*/
264
265
BZ_EXTERN int BZ_API(bzBuffToBuffCompress) (
266
char* dest,
267
unsigned int* destLen,
268
char* source,
269
unsigned int sourceLen,
270
int blockSize100k,
271
int verbosity,
272
int workFactor
273
);
274
275
BZ_EXTERN int BZ_API(bzBuffToBuffDecompress) (
276
char* dest,
277
unsigned int* destLen,
278
char* source,
279
unsigned int sourceLen,
280
int small,
281
int verbosity
282
);
283
284
285
/*--
286
Code contributed by Yoshioka Tsuneo
287
([email protected]/[email protected]),
288
to support better zlib compatibility.
289
This code is not _officially_ part of libbzip2 (yet);
290
I haven't tested it, documented it, or considered the
291
threading-safeness of it.
292
If this code breaks, please contact both Yoshioka and me.
293
--*/
294
295
BZ_EXTERN const char * BZ_API(bzlibVersion) (
296
void
297
);
298
299
#ifndef BZ_NO_STDIO
300
BZ_EXTERN BZFILE * BZ_API(bzopen) (
301
const char *path,
302
const char *mode
303
);
304
305
BZ_EXTERN BZFILE * BZ_API(bzfopen) (
306
FILE *fp,
307
const char *mode
308
);
309
310
BZ_EXTERN BZFILE * BZ_API(bzdopen) (
311
int fd,
312
const char *mode
313
);
314
315
BZ_EXTERN BZFILE * BZ_API(bzbopen) (
316
int fd,
317
const char* mode,
318
const void* buf,
319
unsigned int len
320
);
321
322
BZ_EXTERN int BZ_API(bzread) (
323
BZFILE* b,
324
void* buf,
325
int len
326
);
327
328
BZ_EXTERN int BZ_API(bzwrite) (
329
BZFILE* b,
330
const void* buf,
331
int len
332
);
333
334
BZ_EXTERN int BZ_API(bzflush) (
335
BZFILE* b
336
);
337
338
BZ_EXTERN int BZ_API(bzclose) (
339
BZFILE* b
340
);
341
342
BZ_EXTERN const char * BZ_API(bzerror) (
343
BZFILE *b,
344
int *errnum
345
);
346
#endif
347
348
349
#endif
350
351
/*-------------------------------------------------------------*/
352
/*--- end bzlib.h ---*/
353
/*-------------------------------------------------------------*/
354
355