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