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