bzlib.h revision 78556
178556Sobrien 278556Sobrien/*-------------------------------------------------------------*/ 378556Sobrien/*--- Public header file for the library. ---*/ 478556Sobrien/*--- bzlib.h ---*/ 578556Sobrien/*-------------------------------------------------------------*/ 678556Sobrien 778556Sobrien/*-- 878556Sobrien This file is a part of bzip2 and/or libbzip2, a program and 978556Sobrien library for lossless, block-sorting data compression. 1078556Sobrien 1178556Sobrien Copyright (C) 1996-2000 Julian R Seward. All rights reserved. 1278556Sobrien 1378556Sobrien Redistribution and use in source and binary forms, with or without 1478556Sobrien modification, are permitted provided that the following conditions 1578556Sobrien are met: 1678556Sobrien 1778556Sobrien 1. Redistributions of source code must retain the above copyright 1878556Sobrien notice, this list of conditions and the following disclaimer. 1978556Sobrien 2078556Sobrien 2. The origin of this software must not be misrepresented; you must 2178556Sobrien not claim that you wrote the original software. If you use this 2278556Sobrien software in a product, an acknowledgment in the product 2378556Sobrien documentation would be appreciated but is not required. 2478556Sobrien 2578556Sobrien 3. Altered source versions must be plainly marked as such, and must 2678556Sobrien not be misrepresented as being the original software. 2778556Sobrien 2878556Sobrien 4. The name of the author may not be used to endorse or promote 2978556Sobrien products derived from this software without specific prior written 3078556Sobrien permission. 3178556Sobrien 3278556Sobrien THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 3378556Sobrien OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 3478556Sobrien WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 3578556Sobrien ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 3678556Sobrien DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 3778556Sobrien DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 3878556Sobrien GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 3978556Sobrien INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 4078556Sobrien WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 4178556Sobrien NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 4278556Sobrien SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 4378556Sobrien 4478556Sobrien Julian Seward, Cambridge, UK. 4578556Sobrien jseward@acm.org 4678556Sobrien bzip2/libbzip2 version 1.0 of 21 March 2000 4778556Sobrien 4878556Sobrien This program is based on (at least) the work of: 4978556Sobrien Mike Burrows 5078556Sobrien David Wheeler 5178556Sobrien Peter Fenwick 5278556Sobrien Alistair Moffat 5378556Sobrien Radford Neal 5478556Sobrien Ian H. Witten 5578556Sobrien Robert Sedgewick 5678556Sobrien Jon L. Bentley 5778556Sobrien 5878556Sobrien For more information on these sources, see the manual. 5978556Sobrien--*/ 6078556Sobrien 6178556Sobrien 6278556Sobrien#ifndef _BZLIB_H 6378556Sobrien#define _BZLIB_H 6478556Sobrien 6578556Sobrien#ifdef __cplusplus 6678556Sobrienextern "C" { 6778556Sobrien#endif 6878556Sobrien 6978556Sobrien#define BZ_RUN 0 7078556Sobrien#define BZ_FLUSH 1 7178556Sobrien#define BZ_FINISH 2 7278556Sobrien 7378556Sobrien#define BZ_OK 0 7478556Sobrien#define BZ_RUN_OK 1 7578556Sobrien#define BZ_FLUSH_OK 2 7678556Sobrien#define BZ_FINISH_OK 3 7778556Sobrien#define BZ_STREAM_END 4 7878556Sobrien#define BZ_SEQUENCE_ERROR (-1) 7978556Sobrien#define BZ_PARAM_ERROR (-2) 8078556Sobrien#define BZ_MEM_ERROR (-3) 8178556Sobrien#define BZ_DATA_ERROR (-4) 8278556Sobrien#define BZ_DATA_ERROR_MAGIC (-5) 8378556Sobrien#define BZ_IO_ERROR (-6) 8478556Sobrien#define BZ_UNEXPECTED_EOF (-7) 8578556Sobrien#define BZ_OUTBUFF_FULL (-8) 8678556Sobrien#define BZ_CONFIG_ERROR (-9) 8778556Sobrien 8878556Sobrientypedef 8978556Sobrien struct { 9078556Sobrien char *next_in; 9178556Sobrien unsigned int avail_in; 9278556Sobrien unsigned int total_in_lo32; 9378556Sobrien unsigned int total_in_hi32; 9478556Sobrien 9578556Sobrien char *next_out; 9678556Sobrien unsigned int avail_out; 9778556Sobrien unsigned int total_out_lo32; 9878556Sobrien unsigned int total_out_hi32; 9978556Sobrien 10078556Sobrien void *state; 10178556Sobrien 10278556Sobrien void *(*bzalloc)(void *,int,int); 10378556Sobrien void (*bzfree)(void *,void *); 10478556Sobrien void *opaque; 10578556Sobrien } 10678556Sobrien bz_stream; 10778556Sobrien 10878556Sobrien 10978556Sobrien#ifndef BZ_IMPORT 11078556Sobrien#define BZ_EXPORT 11178556Sobrien#endif 11278556Sobrien 11378556Sobrien#ifdef _WIN32 11478556Sobrien# include <stdio.h> 11578556Sobrien# include <windows.h> 11678556Sobrien# ifdef small 11778556Sobrien /* windows.h define small to char */ 11878556Sobrien# undef small 11978556Sobrien# endif 12078556Sobrien# ifdef BZ_EXPORT 12178556Sobrien# define BZ_API(func) WINAPI func 12278556Sobrien# define BZ_EXTERN extern 12378556Sobrien# else 12478556Sobrien /* import windows dll dynamically */ 12578556Sobrien# define BZ_API(func) (WINAPI * func) 12678556Sobrien# define BZ_EXTERN 12778556Sobrien# endif 12878556Sobrien#else 12978556Sobrien# define BZ_API(func) func 13078556Sobrien# define BZ_EXTERN extern 13178556Sobrien#endif 13278556Sobrien 13378556Sobrien 13478556Sobrien/*-- Core (low-level) library functions --*/ 13578556Sobrien 13678556SobrienBZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( 13778556Sobrien bz_stream* strm, 13878556Sobrien int blockSize100k, 13978556Sobrien int verbosity, 14078556Sobrien int workFactor 14178556Sobrien ); 14278556Sobrien 14378556SobrienBZ_EXTERN int BZ_API(BZ2_bzCompress) ( 14478556Sobrien bz_stream* strm, 14578556Sobrien int action 14678556Sobrien ); 14778556Sobrien 14878556SobrienBZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( 14978556Sobrien bz_stream* strm 15078556Sobrien ); 15178556Sobrien 15278556SobrienBZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( 15378556Sobrien bz_stream *strm, 15478556Sobrien int verbosity, 15578556Sobrien int small 15678556Sobrien ); 15778556Sobrien 15878556SobrienBZ_EXTERN int BZ_API(BZ2_bzDecompress) ( 15978556Sobrien bz_stream* strm 16078556Sobrien ); 16178556Sobrien 16278556SobrienBZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( 16378556Sobrien bz_stream *strm 16478556Sobrien ); 16578556Sobrien 16678556Sobrien 16778556Sobrien 16878556Sobrien/*-- High(er) level library functions --*/ 16978556Sobrien 17078556Sobrien#ifndef BZ_NO_STDIO 17178556Sobrien#define BZ_MAX_UNUSED 5000 17278556Sobrien 17378556Sobrientypedef void BZFILE; 17478556Sobrien 17578556SobrienBZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( 17678556Sobrien int* bzerror, 17778556Sobrien FILE* f, 17878556Sobrien int verbosity, 17978556Sobrien int small, 18078556Sobrien void* unused, 18178556Sobrien int nUnused 18278556Sobrien ); 18378556Sobrien 18478556SobrienBZ_EXTERN void BZ_API(BZ2_bzReadClose) ( 18578556Sobrien int* bzerror, 18678556Sobrien BZFILE* b 18778556Sobrien ); 18878556Sobrien 18978556SobrienBZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( 19078556Sobrien int* bzerror, 19178556Sobrien BZFILE* b, 19278556Sobrien void** unused, 19378556Sobrien int* nUnused 19478556Sobrien ); 19578556Sobrien 19678556SobrienBZ_EXTERN int BZ_API(BZ2_bzRead) ( 19778556Sobrien int* bzerror, 19878556Sobrien BZFILE* b, 19978556Sobrien void* buf, 20078556Sobrien int len 20178556Sobrien ); 20278556Sobrien 20378556SobrienBZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( 20478556Sobrien int* bzerror, 20578556Sobrien FILE* f, 20678556Sobrien int blockSize100k, 20778556Sobrien int verbosity, 20878556Sobrien int workFactor 20978556Sobrien ); 21078556Sobrien 21178556SobrienBZ_EXTERN void BZ_API(BZ2_bzWrite) ( 21278556Sobrien int* bzerror, 21378556Sobrien BZFILE* b, 21478556Sobrien void* buf, 21578556Sobrien int len 21678556Sobrien ); 21778556Sobrien 21878556SobrienBZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( 21978556Sobrien int* bzerror, 22078556Sobrien BZFILE* b, 22178556Sobrien int abandon, 22278556Sobrien unsigned int* nbytes_in, 22378556Sobrien unsigned int* nbytes_out 22478556Sobrien ); 22578556Sobrien 22678556SobrienBZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( 22778556Sobrien int* bzerror, 22878556Sobrien BZFILE* b, 22978556Sobrien int abandon, 23078556Sobrien unsigned int* nbytes_in_lo32, 23178556Sobrien unsigned int* nbytes_in_hi32, 23278556Sobrien unsigned int* nbytes_out_lo32, 23378556Sobrien unsigned int* nbytes_out_hi32 23478556Sobrien ); 23578556Sobrien#endif 23678556Sobrien 23778556Sobrien 23878556Sobrien/*-- Utility functions --*/ 23978556Sobrien 24078556SobrienBZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( 24178556Sobrien char* dest, 24278556Sobrien unsigned int* destLen, 24378556Sobrien char* source, 24478556Sobrien unsigned int sourceLen, 24578556Sobrien int blockSize100k, 24678556Sobrien int verbosity, 24778556Sobrien int workFactor 24878556Sobrien ); 24978556Sobrien 25078556SobrienBZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( 25178556Sobrien char* dest, 25278556Sobrien unsigned int* destLen, 25378556Sobrien char* source, 25478556Sobrien unsigned int sourceLen, 25578556Sobrien int small, 25678556Sobrien int verbosity 25778556Sobrien ); 25878556Sobrien 25978556Sobrien 26078556Sobrien/*-- 26178556Sobrien Code contributed by Yoshioka Tsuneo 26278556Sobrien (QWF00133@niftyserve.or.jp/tsuneo-y@is.aist-nara.ac.jp), 26378556Sobrien to support better zlib compatibility. 26478556Sobrien This code is not _officially_ part of libbzip2 (yet); 26578556Sobrien I haven't tested it, documented it, or considered the 26678556Sobrien threading-safeness of it. 26778556Sobrien If this code breaks, please contact both Yoshioka and me. 26878556Sobrien--*/ 26978556Sobrien 27078556SobrienBZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( 27178556Sobrien void 27278556Sobrien ); 27378556Sobrien 27478556Sobrien#ifndef BZ_NO_STDIO 27578556SobrienBZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( 27678556Sobrien const char *path, 27778556Sobrien const char *mode 27878556Sobrien ); 27978556Sobrien 28078556SobrienBZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( 28178556Sobrien int fd, 28278556Sobrien const char *mode 28378556Sobrien ); 28478556Sobrien 28578556SobrienBZ_EXTERN int BZ_API(BZ2_bzread) ( 28678556Sobrien BZFILE* b, 28778556Sobrien void* buf, 28878556Sobrien int len 28978556Sobrien ); 29078556Sobrien 29178556SobrienBZ_EXTERN int BZ_API(BZ2_bzwrite) ( 29278556Sobrien BZFILE* b, 29378556Sobrien void* buf, 29478556Sobrien int len 29578556Sobrien ); 29678556Sobrien 29778556SobrienBZ_EXTERN int BZ_API(BZ2_bzflush) ( 29878556Sobrien BZFILE* b 29978556Sobrien ); 30078556Sobrien 30178556SobrienBZ_EXTERN void BZ_API(BZ2_bzclose) ( 30278556Sobrien BZFILE* b 30378556Sobrien ); 30478556Sobrien 30578556SobrienBZ_EXTERN const char * BZ_API(BZ2_bzerror) ( 30678556Sobrien BZFILE *b, 30778556Sobrien int *errnum 30878556Sobrien ); 30978556Sobrien#endif 31078556Sobrien 31178556Sobrien#ifdef __cplusplus 31278556Sobrien} 31378556Sobrien#endif 31478556Sobrien 31578556Sobrien#endif 31678556Sobrien 31778556Sobrien/*-------------------------------------------------------------*/ 31878556Sobrien/*--- end bzlib.h ---*/ 31978556Sobrien/*-------------------------------------------------------------*/ 320