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