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