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