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