1*c29fdfc1Swdenk /* 2*c29fdfc1Swdenk * This file is a modified version of bzlib.h from the bzip2-1.0.2 3*c29fdfc1Swdenk * distribution which can be found at http://sources.redhat.com/bzip2/ 4*c29fdfc1Swdenk */ 5*c29fdfc1Swdenk 6*c29fdfc1Swdenk /*-------------------------------------------------------------*/ 7*c29fdfc1Swdenk /*--- Public header file for the library. ---*/ 8*c29fdfc1Swdenk /*--- bzlib.h ---*/ 9*c29fdfc1Swdenk /*-------------------------------------------------------------*/ 10*c29fdfc1Swdenk 11*c29fdfc1Swdenk /*-- 12*c29fdfc1Swdenk This file is a part of bzip2 and/or libbzip2, a program and 13*c29fdfc1Swdenk library for lossless, block-sorting data compression. 14*c29fdfc1Swdenk 15*c29fdfc1Swdenk Copyright (C) 1996-2002 Julian R Seward. All rights reserved. 16*c29fdfc1Swdenk 17*c29fdfc1Swdenk Redistribution and use in source and binary forms, with or without 18*c29fdfc1Swdenk modification, are permitted provided that the following conditions 19*c29fdfc1Swdenk are met: 20*c29fdfc1Swdenk 21*c29fdfc1Swdenk 1. Redistributions of source code must retain the above copyright 22*c29fdfc1Swdenk notice, this list of conditions and the following disclaimer. 23*c29fdfc1Swdenk 24*c29fdfc1Swdenk 2. The origin of this software must not be misrepresented; you must 25*c29fdfc1Swdenk not claim that you wrote the original software. If you use this 26*c29fdfc1Swdenk software in a product, an acknowledgment in the product 27*c29fdfc1Swdenk documentation would be appreciated but is not required. 28*c29fdfc1Swdenk 29*c29fdfc1Swdenk 3. Altered source versions must be plainly marked as such, and must 30*c29fdfc1Swdenk not be misrepresented as being the original software. 31*c29fdfc1Swdenk 32*c29fdfc1Swdenk 4. The name of the author may not be used to endorse or promote 33*c29fdfc1Swdenk products derived from this software without specific prior written 34*c29fdfc1Swdenk permission. 35*c29fdfc1Swdenk 36*c29fdfc1Swdenk THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 37*c29fdfc1Swdenk OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 38*c29fdfc1Swdenk WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 39*c29fdfc1Swdenk ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 40*c29fdfc1Swdenk DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 41*c29fdfc1Swdenk DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 42*c29fdfc1Swdenk GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 43*c29fdfc1Swdenk INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 44*c29fdfc1Swdenk WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 45*c29fdfc1Swdenk NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 46*c29fdfc1Swdenk SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 47*c29fdfc1Swdenk 48*c29fdfc1Swdenk Julian Seward, Cambridge, UK. 49*c29fdfc1Swdenk jseward@acm.org 50*c29fdfc1Swdenk bzip2/libbzip2 version 1.0 of 21 March 2000 51*c29fdfc1Swdenk 52*c29fdfc1Swdenk This program is based on (at least) the work of: 53*c29fdfc1Swdenk Mike Burrows 54*c29fdfc1Swdenk David Wheeler 55*c29fdfc1Swdenk Peter Fenwick 56*c29fdfc1Swdenk Alistair Moffat 57*c29fdfc1Swdenk Radford Neal 58*c29fdfc1Swdenk Ian H. Witten 59*c29fdfc1Swdenk Robert Sedgewick 60*c29fdfc1Swdenk Jon L. Bentley 61*c29fdfc1Swdenk 62*c29fdfc1Swdenk For more information on these sources, see the manual. 63*c29fdfc1Swdenk --*/ 64*c29fdfc1Swdenk 65*c29fdfc1Swdenk 66*c29fdfc1Swdenk #ifndef _BZLIB_H 67*c29fdfc1Swdenk #define _BZLIB_H 68*c29fdfc1Swdenk 69*c29fdfc1Swdenk /* Configure for U-Boot environment */ 70*c29fdfc1Swdenk #define BZ_NO_STDIO 71*c29fdfc1Swdenk #define BZ_NO_COMPRESS 72*c29fdfc1Swdenk /* End of configuration for U-Boot environment */ 73*c29fdfc1Swdenk 74*c29fdfc1Swdenk #ifdef __cplusplus 75*c29fdfc1Swdenk extern "C" { 76*c29fdfc1Swdenk #endif 77*c29fdfc1Swdenk 78*c29fdfc1Swdenk #define BZ_RUN 0 79*c29fdfc1Swdenk #define BZ_FLUSH 1 80*c29fdfc1Swdenk #define BZ_FINISH 2 81*c29fdfc1Swdenk 82*c29fdfc1Swdenk #define BZ_OK 0 83*c29fdfc1Swdenk #define BZ_RUN_OK 1 84*c29fdfc1Swdenk #define BZ_FLUSH_OK 2 85*c29fdfc1Swdenk #define BZ_FINISH_OK 3 86*c29fdfc1Swdenk #define BZ_STREAM_END 4 87*c29fdfc1Swdenk #define BZ_SEQUENCE_ERROR (-1) 88*c29fdfc1Swdenk #define BZ_PARAM_ERROR (-2) 89*c29fdfc1Swdenk #define BZ_MEM_ERROR (-3) 90*c29fdfc1Swdenk #define BZ_DATA_ERROR (-4) 91*c29fdfc1Swdenk #define BZ_DATA_ERROR_MAGIC (-5) 92*c29fdfc1Swdenk #define BZ_IO_ERROR (-6) 93*c29fdfc1Swdenk #define BZ_UNEXPECTED_EOF (-7) 94*c29fdfc1Swdenk #define BZ_OUTBUFF_FULL (-8) 95*c29fdfc1Swdenk #define BZ_CONFIG_ERROR (-9) 96*c29fdfc1Swdenk 97*c29fdfc1Swdenk typedef 98*c29fdfc1Swdenk struct { 99*c29fdfc1Swdenk char *next_in; 100*c29fdfc1Swdenk unsigned int avail_in; 101*c29fdfc1Swdenk unsigned int total_in_lo32; 102*c29fdfc1Swdenk unsigned int total_in_hi32; 103*c29fdfc1Swdenk 104*c29fdfc1Swdenk char *next_out; 105*c29fdfc1Swdenk unsigned int avail_out; 106*c29fdfc1Swdenk unsigned int total_out_lo32; 107*c29fdfc1Swdenk unsigned int total_out_hi32; 108*c29fdfc1Swdenk 109*c29fdfc1Swdenk void *state; 110*c29fdfc1Swdenk 111*c29fdfc1Swdenk void *(*bzalloc)(void *,int,int); 112*c29fdfc1Swdenk void (*bzfree)(void *,void *); 113*c29fdfc1Swdenk void *opaque; 114*c29fdfc1Swdenk } 115*c29fdfc1Swdenk bz_stream; 116*c29fdfc1Swdenk 117*c29fdfc1Swdenk 118*c29fdfc1Swdenk #ifndef BZ_IMPORT 119*c29fdfc1Swdenk #define BZ_EXPORT 120*c29fdfc1Swdenk #endif 121*c29fdfc1Swdenk 122*c29fdfc1Swdenk #ifdef _WIN32 123*c29fdfc1Swdenk # include <windows.h> 124*c29fdfc1Swdenk # ifdef small 125*c29fdfc1Swdenk /* windows.h define small to char */ 126*c29fdfc1Swdenk # undef small 127*c29fdfc1Swdenk # endif 128*c29fdfc1Swdenk # ifdef BZ_EXPORT 129*c29fdfc1Swdenk # define BZ_API(func) WINAPI func 130*c29fdfc1Swdenk # define BZ_EXTERN extern 131*c29fdfc1Swdenk # else 132*c29fdfc1Swdenk /* import windows dll dynamically */ 133*c29fdfc1Swdenk # define BZ_API(func) (WINAPI * func) 134*c29fdfc1Swdenk # define BZ_EXTERN 135*c29fdfc1Swdenk # endif 136*c29fdfc1Swdenk #else 137*c29fdfc1Swdenk # define BZ_API(func) func 138*c29fdfc1Swdenk # define BZ_EXTERN extern 139*c29fdfc1Swdenk #endif 140*c29fdfc1Swdenk 141*c29fdfc1Swdenk 142*c29fdfc1Swdenk /*-- Core (low-level) library functions --*/ 143*c29fdfc1Swdenk 144*c29fdfc1Swdenk BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( 145*c29fdfc1Swdenk bz_stream* strm, 146*c29fdfc1Swdenk int blockSize100k, 147*c29fdfc1Swdenk int verbosity, 148*c29fdfc1Swdenk int workFactor 149*c29fdfc1Swdenk ); 150*c29fdfc1Swdenk 151*c29fdfc1Swdenk BZ_EXTERN int BZ_API(BZ2_bzCompress) ( 152*c29fdfc1Swdenk bz_stream* strm, 153*c29fdfc1Swdenk int action 154*c29fdfc1Swdenk ); 155*c29fdfc1Swdenk 156*c29fdfc1Swdenk BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( 157*c29fdfc1Swdenk bz_stream* strm 158*c29fdfc1Swdenk ); 159*c29fdfc1Swdenk 160*c29fdfc1Swdenk BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( 161*c29fdfc1Swdenk bz_stream *strm, 162*c29fdfc1Swdenk int verbosity, 163*c29fdfc1Swdenk int small 164*c29fdfc1Swdenk ); 165*c29fdfc1Swdenk 166*c29fdfc1Swdenk BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( 167*c29fdfc1Swdenk bz_stream* strm 168*c29fdfc1Swdenk ); 169*c29fdfc1Swdenk 170*c29fdfc1Swdenk BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( 171*c29fdfc1Swdenk bz_stream *strm 172*c29fdfc1Swdenk ); 173*c29fdfc1Swdenk 174*c29fdfc1Swdenk 175*c29fdfc1Swdenk 176*c29fdfc1Swdenk /*-- High(er) level library functions --*/ 177*c29fdfc1Swdenk 178*c29fdfc1Swdenk #ifndef BZ_NO_STDIO 179*c29fdfc1Swdenk #define BZ_MAX_UNUSED 5000 180*c29fdfc1Swdenk 181*c29fdfc1Swdenk /* Need a definitition for FILE */ 182*c29fdfc1Swdenk #include <stdio.h> 183*c29fdfc1Swdenk 184*c29fdfc1Swdenk typedef void BZFILE; 185*c29fdfc1Swdenk 186*c29fdfc1Swdenk BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( 187*c29fdfc1Swdenk int* bzerror, 188*c29fdfc1Swdenk FILE* f, 189*c29fdfc1Swdenk int verbosity, 190*c29fdfc1Swdenk int small, 191*c29fdfc1Swdenk void* unused, 192*c29fdfc1Swdenk int nUnused 193*c29fdfc1Swdenk ); 194*c29fdfc1Swdenk 195*c29fdfc1Swdenk BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( 196*c29fdfc1Swdenk int* bzerror, 197*c29fdfc1Swdenk BZFILE* b 198*c29fdfc1Swdenk ); 199*c29fdfc1Swdenk 200*c29fdfc1Swdenk BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( 201*c29fdfc1Swdenk int* bzerror, 202*c29fdfc1Swdenk BZFILE* b, 203*c29fdfc1Swdenk void** unused, 204*c29fdfc1Swdenk int* nUnused 205*c29fdfc1Swdenk ); 206*c29fdfc1Swdenk 207*c29fdfc1Swdenk BZ_EXTERN int BZ_API(BZ2_bzRead) ( 208*c29fdfc1Swdenk int* bzerror, 209*c29fdfc1Swdenk BZFILE* b, 210*c29fdfc1Swdenk void* buf, 211*c29fdfc1Swdenk int len 212*c29fdfc1Swdenk ); 213*c29fdfc1Swdenk 214*c29fdfc1Swdenk BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( 215*c29fdfc1Swdenk int* bzerror, 216*c29fdfc1Swdenk FILE* f, 217*c29fdfc1Swdenk int blockSize100k, 218*c29fdfc1Swdenk int verbosity, 219*c29fdfc1Swdenk int workFactor 220*c29fdfc1Swdenk ); 221*c29fdfc1Swdenk 222*c29fdfc1Swdenk BZ_EXTERN void BZ_API(BZ2_bzWrite) ( 223*c29fdfc1Swdenk int* bzerror, 224*c29fdfc1Swdenk BZFILE* b, 225*c29fdfc1Swdenk void* buf, 226*c29fdfc1Swdenk int len 227*c29fdfc1Swdenk ); 228*c29fdfc1Swdenk 229*c29fdfc1Swdenk BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( 230*c29fdfc1Swdenk int* bzerror, 231*c29fdfc1Swdenk BZFILE* b, 232*c29fdfc1Swdenk int abandon, 233*c29fdfc1Swdenk unsigned int* nbytes_in, 234*c29fdfc1Swdenk unsigned int* nbytes_out 235*c29fdfc1Swdenk ); 236*c29fdfc1Swdenk 237*c29fdfc1Swdenk BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( 238*c29fdfc1Swdenk int* bzerror, 239*c29fdfc1Swdenk BZFILE* b, 240*c29fdfc1Swdenk int abandon, 241*c29fdfc1Swdenk unsigned int* nbytes_in_lo32, 242*c29fdfc1Swdenk unsigned int* nbytes_in_hi32, 243*c29fdfc1Swdenk unsigned int* nbytes_out_lo32, 244*c29fdfc1Swdenk unsigned int* nbytes_out_hi32 245*c29fdfc1Swdenk ); 246*c29fdfc1Swdenk #endif 247*c29fdfc1Swdenk 248*c29fdfc1Swdenk 249*c29fdfc1Swdenk /*-- Utility functions --*/ 250*c29fdfc1Swdenk 251*c29fdfc1Swdenk BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( 252*c29fdfc1Swdenk char* dest, 253*c29fdfc1Swdenk unsigned int* destLen, 254*c29fdfc1Swdenk char* source, 255*c29fdfc1Swdenk unsigned int sourceLen, 256*c29fdfc1Swdenk int blockSize100k, 257*c29fdfc1Swdenk int verbosity, 258*c29fdfc1Swdenk int workFactor 259*c29fdfc1Swdenk ); 260*c29fdfc1Swdenk 261*c29fdfc1Swdenk BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( 262*c29fdfc1Swdenk char* dest, 263*c29fdfc1Swdenk unsigned int* destLen, 264*c29fdfc1Swdenk char* source, 265*c29fdfc1Swdenk unsigned int sourceLen, 266*c29fdfc1Swdenk int small, 267*c29fdfc1Swdenk int verbosity 268*c29fdfc1Swdenk ); 269*c29fdfc1Swdenk 270*c29fdfc1Swdenk 271*c29fdfc1Swdenk /*-- 272*c29fdfc1Swdenk Code contributed by Yoshioka Tsuneo 273*c29fdfc1Swdenk (QWF00133@niftyserve.or.jp/tsuneo-y@is.aist-nara.ac.jp), 274*c29fdfc1Swdenk to support better zlib compatibility. 275*c29fdfc1Swdenk This code is not _officially_ part of libbzip2 (yet); 276*c29fdfc1Swdenk I haven't tested it, documented it, or considered the 277*c29fdfc1Swdenk threading-safeness of it. 278*c29fdfc1Swdenk If this code breaks, please contact both Yoshioka and me. 279*c29fdfc1Swdenk --*/ 280*c29fdfc1Swdenk 281*c29fdfc1Swdenk BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( 282*c29fdfc1Swdenk void 283*c29fdfc1Swdenk ); 284*c29fdfc1Swdenk 285*c29fdfc1Swdenk #ifndef BZ_NO_STDIO 286*c29fdfc1Swdenk BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( 287*c29fdfc1Swdenk const char *path, 288*c29fdfc1Swdenk const char *mode 289*c29fdfc1Swdenk ); 290*c29fdfc1Swdenk 291*c29fdfc1Swdenk BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( 292*c29fdfc1Swdenk int fd, 293*c29fdfc1Swdenk const char *mode 294*c29fdfc1Swdenk ); 295*c29fdfc1Swdenk 296*c29fdfc1Swdenk BZ_EXTERN int BZ_API(BZ2_bzread) ( 297*c29fdfc1Swdenk BZFILE* b, 298*c29fdfc1Swdenk void* buf, 299*c29fdfc1Swdenk int len 300*c29fdfc1Swdenk ); 301*c29fdfc1Swdenk 302*c29fdfc1Swdenk BZ_EXTERN int BZ_API(BZ2_bzwrite) ( 303*c29fdfc1Swdenk BZFILE* b, 304*c29fdfc1Swdenk void* buf, 305*c29fdfc1Swdenk int len 306*c29fdfc1Swdenk ); 307*c29fdfc1Swdenk 308*c29fdfc1Swdenk BZ_EXTERN int BZ_API(BZ2_bzflush) ( 309*c29fdfc1Swdenk BZFILE* b 310*c29fdfc1Swdenk ); 311*c29fdfc1Swdenk 312*c29fdfc1Swdenk BZ_EXTERN void BZ_API(BZ2_bzclose) ( 313*c29fdfc1Swdenk BZFILE* b 314*c29fdfc1Swdenk ); 315*c29fdfc1Swdenk 316*c29fdfc1Swdenk BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( 317*c29fdfc1Swdenk BZFILE *b, 318*c29fdfc1Swdenk int *errnum 319*c29fdfc1Swdenk ); 320*c29fdfc1Swdenk #endif 321*c29fdfc1Swdenk 322*c29fdfc1Swdenk #ifdef __cplusplus 323*c29fdfc1Swdenk } 324*c29fdfc1Swdenk #endif 325*c29fdfc1Swdenk 326*c29fdfc1Swdenk #endif 327*c29fdfc1Swdenk 328*c29fdfc1Swdenk /*-------------------------------------------------------------*/ 329*c29fdfc1Swdenk /*--- end bzlib.h ---*/ 330*c29fdfc1Swdenk /*-------------------------------------------------------------*/ 331