Chris@4: Chris@4: /*-------------------------------------------------------------*/ Chris@4: /*--- Public header file for the library. ---*/ Chris@4: /*--- bzlib.h ---*/ Chris@4: /*-------------------------------------------------------------*/ Chris@4: Chris@4: /* ------------------------------------------------------------------ Chris@4: This file is part of bzip2/libbzip2, a program and library for Chris@4: lossless, block-sorting data compression. Chris@4: Chris@4: bzip2/libbzip2 version 1.0.6 of 6 September 2010 Chris@4: Copyright (C) 1996-2010 Julian Seward Chris@4: Chris@4: Please read the WARNING, DISCLAIMER and PATENTS sections in the Chris@4: README file. Chris@4: Chris@4: This program is released under the terms of the license contained Chris@4: in the file LICENSE. Chris@4: ------------------------------------------------------------------ */ Chris@4: Chris@4: Chris@4: #ifndef _BZLIB_H Chris@4: #define _BZLIB_H Chris@4: Chris@4: #ifdef __cplusplus Chris@4: extern "C" { Chris@4: #endif Chris@4: Chris@4: #define BZ_RUN 0 Chris@4: #define BZ_FLUSH 1 Chris@4: #define BZ_FINISH 2 Chris@4: Chris@4: #define BZ_OK 0 Chris@4: #define BZ_RUN_OK 1 Chris@4: #define BZ_FLUSH_OK 2 Chris@4: #define BZ_FINISH_OK 3 Chris@4: #define BZ_STREAM_END 4 Chris@4: #define BZ_SEQUENCE_ERROR (-1) Chris@4: #define BZ_PARAM_ERROR (-2) Chris@4: #define BZ_MEM_ERROR (-3) Chris@4: #define BZ_DATA_ERROR (-4) Chris@4: #define BZ_DATA_ERROR_MAGIC (-5) Chris@4: #define BZ_IO_ERROR (-6) Chris@4: #define BZ_UNEXPECTED_EOF (-7) Chris@4: #define BZ_OUTBUFF_FULL (-8) Chris@4: #define BZ_CONFIG_ERROR (-9) Chris@4: Chris@4: typedef Chris@4: struct { Chris@4: char *next_in; Chris@4: unsigned int avail_in; Chris@4: unsigned int total_in_lo32; Chris@4: unsigned int total_in_hi32; Chris@4: Chris@4: char *next_out; Chris@4: unsigned int avail_out; Chris@4: unsigned int total_out_lo32; Chris@4: unsigned int total_out_hi32; Chris@4: Chris@4: void *state; Chris@4: Chris@4: void *(*bzalloc)(void *,int,int); Chris@4: void (*bzfree)(void *,void *); Chris@4: void *opaque; Chris@4: } Chris@4: bz_stream; Chris@4: Chris@4: Chris@4: #ifndef BZ_IMPORT Chris@4: #define BZ_EXPORT Chris@4: #endif Chris@4: Chris@4: #ifndef BZ_NO_STDIO Chris@4: /* Need a definitition for FILE */ Chris@4: #include Chris@4: #endif Chris@4: Chris@4: #ifdef _WIN32 Chris@4: # include Chris@4: # ifdef small Chris@4: /* windows.h define small to char */ Chris@4: # undef small Chris@4: # endif Chris@4: # ifdef BZ_EXPORT Chris@4: # define BZ_API(func) WINAPI func Chris@4: # define BZ_EXTERN extern Chris@4: # else Chris@4: /* import windows dll dynamically */ Chris@4: # define BZ_API(func) (WINAPI * func) Chris@4: # define BZ_EXTERN Chris@4: # endif Chris@4: #else Chris@4: # define BZ_API(func) func Chris@4: # define BZ_EXTERN extern Chris@4: #endif Chris@4: Chris@4: Chris@4: /*-- Core (low-level) library functions --*/ Chris@4: Chris@4: BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( Chris@4: bz_stream* strm, Chris@4: int blockSize100k, Chris@4: int verbosity, Chris@4: int workFactor Chris@4: ); Chris@4: Chris@4: BZ_EXTERN int BZ_API(BZ2_bzCompress) ( Chris@4: bz_stream* strm, Chris@4: int action Chris@4: ); Chris@4: Chris@4: BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( Chris@4: bz_stream* strm Chris@4: ); Chris@4: Chris@4: BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( Chris@4: bz_stream *strm, Chris@4: int verbosity, Chris@4: int small Chris@4: ); Chris@4: Chris@4: BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( Chris@4: bz_stream* strm Chris@4: ); Chris@4: Chris@4: BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( Chris@4: bz_stream *strm Chris@4: ); Chris@4: Chris@4: Chris@4: Chris@4: /*-- High(er) level library functions --*/ Chris@4: Chris@4: #ifndef BZ_NO_STDIO Chris@4: #define BZ_MAX_UNUSED 5000 Chris@4: Chris@4: typedef void BZFILE; Chris@4: Chris@4: BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( Chris@4: int* bzerror, Chris@4: FILE* f, Chris@4: int verbosity, Chris@4: int small, Chris@4: void* unused, Chris@4: int nUnused Chris@4: ); Chris@4: Chris@4: BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( Chris@4: int* bzerror, Chris@4: BZFILE* b Chris@4: ); Chris@4: Chris@4: BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( Chris@4: int* bzerror, Chris@4: BZFILE* b, Chris@4: void** unused, Chris@4: int* nUnused Chris@4: ); Chris@4: Chris@4: BZ_EXTERN int BZ_API(BZ2_bzRead) ( Chris@4: int* bzerror, Chris@4: BZFILE* b, Chris@4: void* buf, Chris@4: int len Chris@4: ); Chris@4: Chris@4: BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( Chris@4: int* bzerror, Chris@4: FILE* f, Chris@4: int blockSize100k, Chris@4: int verbosity, Chris@4: int workFactor Chris@4: ); Chris@4: Chris@4: BZ_EXTERN void BZ_API(BZ2_bzWrite) ( Chris@4: int* bzerror, Chris@4: BZFILE* b, Chris@4: void* buf, Chris@4: int len Chris@4: ); Chris@4: Chris@4: BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( Chris@4: int* bzerror, Chris@4: BZFILE* b, Chris@4: int abandon, Chris@4: unsigned int* nbytes_in, Chris@4: unsigned int* nbytes_out Chris@4: ); Chris@4: Chris@4: BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( Chris@4: int* bzerror, Chris@4: BZFILE* b, Chris@4: int abandon, Chris@4: unsigned int* nbytes_in_lo32, Chris@4: unsigned int* nbytes_in_hi32, Chris@4: unsigned int* nbytes_out_lo32, Chris@4: unsigned int* nbytes_out_hi32 Chris@4: ); Chris@4: #endif Chris@4: Chris@4: Chris@4: /*-- Utility functions --*/ Chris@4: Chris@4: BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( Chris@4: char* dest, Chris@4: unsigned int* destLen, Chris@4: char* source, Chris@4: unsigned int sourceLen, Chris@4: int blockSize100k, Chris@4: int verbosity, Chris@4: int workFactor Chris@4: ); Chris@4: Chris@4: BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( Chris@4: char* dest, Chris@4: unsigned int* destLen, Chris@4: char* source, Chris@4: unsigned int sourceLen, Chris@4: int small, Chris@4: int verbosity Chris@4: ); Chris@4: Chris@4: Chris@4: /*-- Chris@4: Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) Chris@4: to support better zlib compatibility. Chris@4: This code is not _officially_ part of libbzip2 (yet); Chris@4: I haven't tested it, documented it, or considered the Chris@4: threading-safeness of it. Chris@4: If this code breaks, please contact both Yoshioka and me. Chris@4: --*/ Chris@4: Chris@4: BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( Chris@4: void Chris@4: ); Chris@4: Chris@4: #ifndef BZ_NO_STDIO Chris@4: BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( Chris@4: const char *path, Chris@4: const char *mode Chris@4: ); Chris@4: Chris@4: BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( Chris@4: int fd, Chris@4: const char *mode Chris@4: ); Chris@4: Chris@4: BZ_EXTERN int BZ_API(BZ2_bzread) ( Chris@4: BZFILE* b, Chris@4: void* buf, Chris@4: int len Chris@4: ); Chris@4: Chris@4: BZ_EXTERN int BZ_API(BZ2_bzwrite) ( Chris@4: BZFILE* b, Chris@4: void* buf, Chris@4: int len Chris@4: ); Chris@4: Chris@4: BZ_EXTERN int BZ_API(BZ2_bzflush) ( Chris@4: BZFILE* b Chris@4: ); Chris@4: Chris@4: BZ_EXTERN void BZ_API(BZ2_bzclose) ( Chris@4: BZFILE* b Chris@4: ); Chris@4: Chris@4: BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( Chris@4: BZFILE *b, Chris@4: int *errnum Chris@4: ); Chris@4: #endif Chris@4: Chris@4: #ifdef __cplusplus Chris@4: } Chris@4: #endif Chris@4: Chris@4: #endif Chris@4: Chris@4: /*-------------------------------------------------------------*/ Chris@4: /*--- end bzlib.h ---*/ Chris@4: /*-------------------------------------------------------------*/