/*
* This file is a modified version of bzlib . h from the bzip2 - 1.0 .2
* distribution which can be found at http : //sources.redhat.com/bzip2/
*/
/*-------------------------------------------------------------*/
/*--- Public header file for the library. ---*/
/*--- bzlib.h ---*/
/*-------------------------------------------------------------*/
/*--
This file is a part of bzip2 and / or libbzip2 , a program and
library for lossless , block - sorting data compression .
Copyright ( C ) 1996 - 2002 Julian R Seward . All rights reserved .
Redistribution and use in source and binary forms , with or without
modification , are permitted provided that the following conditions
are met :
1. Redistributions of source code must retain the above copyright
notice , this list of conditions and the following disclaimer .
2. The origin of this software must not be misrepresented ; you must
not claim that you wrote the original software . If you use this
software in a product , an acknowledgment in the product
documentation would be appreciated but is not required .
3. Altered source versions must be plainly marked as such , and must
not be misrepresented as being the original software .
4. The name of the author may not be used to endorse or promote
products derived from this software without specific prior written
permission .
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ` ` AS IS ' ' AND ANY EXPRESS
OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED . IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR CONSEQUENTIAL
DAMAGES ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES ; LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS
INTERRUPTION ) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY ,
WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING
NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
Julian Seward , Cambridge , UK .
jseward @ acm . org
bzip2 / libbzip2 version 1.0 of 21 March 2000
This program is based on ( at least ) the work of :
Mike Burrows
David Wheeler
Peter Fenwick
Alistair Moffat
Radford Neal
Ian H . Witten
Robert Sedgewick
Jon L . Bentley
For more information on these sources , see the manual .
- - */
# ifndef _BZLIB_H
# define _BZLIB_H
/* Configure for U-Boot environment */
# define BZ_NO_STDIO
# ifndef CONFIG_SANDBOX
# define BZ_NO_COMPRESS
# endif
/* End of configuration for U-Boot environment */
# ifdef __cplusplus
extern " C " {
# endif
# define BZ_RUN 0
# define BZ_FLUSH 1
# define BZ_FINISH 2
# define BZ_OK 0
# define BZ_RUN_OK 1
# define BZ_FLUSH_OK 2
# define BZ_FINISH_OK 3
# define BZ_STREAM_END 4
# define BZ_SEQUENCE_ERROR (-1)
# define BZ_PARAM_ERROR (-2)
# define BZ_MEM_ERROR (-3)
# define BZ_DATA_ERROR (-4)
# define BZ_DATA_ERROR_MAGIC (-5)
# define BZ_IO_ERROR (-6)
# define BZ_UNEXPECTED_EOF (-7)
# define BZ_OUTBUFF_FULL (-8)
# define BZ_CONFIG_ERROR (-9)
typedef
struct {
char * next_in ;
unsigned int avail_in ;
unsigned int total_in_lo32 ;
unsigned int total_in_hi32 ;
char * next_out ;
unsigned int avail_out ;
unsigned int total_out_lo32 ;
unsigned int total_out_hi32 ;
void * state ;
void * ( * bzalloc ) ( void * , int , int ) ;
void ( * bzfree ) ( void * , void * ) ;
void * opaque ;
}
bz_stream ;
# ifndef BZ_IMPORT
# define BZ_EXPORT
# endif
# ifdef _WIN32
# include <windows.h>
# ifdef small
/* windows.h define small to char */
# undef small
# endif
# ifdef BZ_EXPORT
# define BZ_API(func) WINAPI func
# define BZ_EXTERN extern
# else
/* import windows dll dynamically */
# define BZ_API(func) (WINAPI * func)
# define BZ_EXTERN
# endif
# else
# define BZ_API(func) func
# define BZ_EXTERN extern
# endif
/*-- Core (low-level) library functions --*/
BZ_EXTERN int BZ_API ( BZ2_bzCompressInit ) (
bz_stream * strm ,
int blockSize100k ,
int verbosity ,
int workFactor
) ;
BZ_EXTERN int BZ_API ( BZ2_bzCompress ) (
bz_stream * strm ,
int action
) ;
BZ_EXTERN int BZ_API ( BZ2_bzCompressEnd ) (
bz_stream * strm
) ;
BZ_EXTERN int BZ_API ( BZ2_bzDecompressInit ) (
bz_stream * strm ,
int verbosity ,
int small
) ;
BZ_EXTERN int BZ_API ( BZ2_bzDecompress ) (
bz_stream * strm
) ;
BZ_EXTERN int BZ_API ( BZ2_bzDecompressEnd ) (
bz_stream * strm
) ;
/*-- High(er) level library functions --*/
# ifndef BZ_NO_STDIO
# define BZ_MAX_UNUSED 5000
/* Need a definitition for FILE */
# include <stdio.h>
typedef void BZFILE ;
BZ_EXTERN BZFILE * BZ_API ( BZ2_bzReadOpen ) (
int * bzerror ,
FILE * f ,
int verbosity ,
int small ,
void * unused ,
int nUnused
) ;
BZ_EXTERN void BZ_API ( BZ2_bzReadClose ) (
int * bzerror ,
BZFILE * b
) ;
BZ_EXTERN void BZ_API ( BZ2_bzReadGetUnused ) (
int * bzerror ,
BZFILE * b ,
void * * unused ,
int * nUnused
) ;
BZ_EXTERN int BZ_API ( BZ2_bzRead ) (
int * bzerror ,
BZFILE * b ,
void * buf ,
int len
) ;
BZ_EXTERN BZFILE * BZ_API ( BZ2_bzWriteOpen ) (
int * bzerror ,
FILE * f ,
int blockSize100k ,
int verbosity ,
int workFactor
) ;
BZ_EXTERN void BZ_API ( BZ2_bzWrite ) (
int * bzerror ,
BZFILE * b ,
void * buf ,
int len
) ;
BZ_EXTERN void BZ_API ( BZ2_bzWriteClose ) (
int * bzerror ,
BZFILE * b ,
int abandon ,
unsigned int * nbytes_in ,
unsigned int * nbytes_out
) ;
BZ_EXTERN void BZ_API ( BZ2_bzWriteClose64 ) (
int * bzerror ,
BZFILE * b ,
int abandon ,
unsigned int * nbytes_in_lo32 ,
unsigned int * nbytes_in_hi32 ,
unsigned int * nbytes_out_lo32 ,
unsigned int * nbytes_out_hi32
) ;
# endif
/*-- Utility functions --*/
BZ_EXTERN int BZ_API ( BZ2_bzBuffToBuffCompress ) (
char * dest ,
unsigned int * destLen ,
char * source ,
unsigned int sourceLen ,
int blockSize100k ,
int verbosity ,
int workFactor
) ;
BZ_EXTERN int BZ_API ( BZ2_bzBuffToBuffDecompress ) (
char * dest ,
unsigned int * destLen ,
char * source ,
unsigned int sourceLen ,
int small ,
int verbosity
) ;
/*--
Code contributed by Yoshioka Tsuneo
( QWF00133 @ niftyserve . or . jp / tsuneo - y @ is . aist - nara . ac . jp ) ,
to support better zlib compatibility .
This code is not _officially_ part of libbzip2 ( yet ) ;
I haven ' t tested it , documented it , or considered the
threading - safeness of it .
If this code breaks , please contact both Yoshioka and me .
- - */
BZ_EXTERN const char * BZ_API ( BZ2_bzlibVersion ) (
void
) ;
# ifndef BZ_NO_STDIO
BZ_EXTERN BZFILE * BZ_API ( BZ2_bzopen ) (
const char * path ,
const char * mode
) ;
BZ_EXTERN BZFILE * BZ_API ( BZ2_bzdopen ) (
int fd ,
const char * mode
) ;
BZ_EXTERN int BZ_API ( BZ2_bzread ) (
BZFILE * b ,
void * buf ,
int len
) ;
BZ_EXTERN int BZ_API ( BZ2_bzwrite ) (
BZFILE * b ,
void * buf ,
int len
) ;
BZ_EXTERN int BZ_API ( BZ2_bzflush ) (
BZFILE * b
) ;
BZ_EXTERN void BZ_API ( BZ2_bzclose ) (
BZFILE * b
) ;
BZ_EXTERN const char * BZ_API ( BZ2_bzerror ) (
BZFILE * b ,
int * errnum
) ;
# endif
# ifdef __cplusplus
}
# endif
# endif
/*-------------------------------------------------------------*/
/*--- end bzlib.h ---*/
/*-------------------------------------------------------------*/