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