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