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