Blame


1 ff3adf60 2004-04-14 devnull /*
2 ff3adf60 2004-04-14 devnull * THIS FILE IS NOT IDENTICAL TO THE ORIGINAL
3 ff3adf60 2004-04-14 devnull * FROM THE BZIP2 DISTRIBUTION.
4 ff3adf60 2004-04-14 devnull *
5 ff3adf60 2004-04-14 devnull * It has been modified, mainly to break the library
6 ff3adf60 2004-04-14 devnull * into smaller pieces.
7 ff3adf60 2004-04-14 devnull *
8 ff3adf60 2004-04-14 devnull * Russ Cox
9 ff3adf60 2004-04-14 devnull * rsc@plan9.bell-labs.com
10 ff3adf60 2004-04-14 devnull * July 2000
11 ff3adf60 2004-04-14 devnull */
12 ff3adf60 2004-04-14 devnull
13 ff3adf60 2004-04-14 devnull /*-------------------------------------------------------------*/
14 ff3adf60 2004-04-14 devnull /*--- Library top-level functions. ---*/
15 ff3adf60 2004-04-14 devnull /*--- bzlib.c ---*/
16 ff3adf60 2004-04-14 devnull /*-------------------------------------------------------------*/
17 ff3adf60 2004-04-14 devnull
18 ff3adf60 2004-04-14 devnull /*--
19 ff3adf60 2004-04-14 devnull This file is a part of bzip2 and/or libbzip2, a program and
20 ff3adf60 2004-04-14 devnull library for lossless, block-sorting data compression.
21 ff3adf60 2004-04-14 devnull
22 ff3adf60 2004-04-14 devnull Copyright (C) 1996-2000 Julian R Seward. All rights reserved.
23 ff3adf60 2004-04-14 devnull
24 ff3adf60 2004-04-14 devnull Redistribution and use in source and binary forms, with or without
25 ff3adf60 2004-04-14 devnull modification, are permitted provided that the following conditions
26 ff3adf60 2004-04-14 devnull are met:
27 ff3adf60 2004-04-14 devnull
28 ff3adf60 2004-04-14 devnull 1. Redistributions of source code must retain the above copyright
29 ff3adf60 2004-04-14 devnull notice, this list of conditions and the following disclaimer.
30 ff3adf60 2004-04-14 devnull
31 ff3adf60 2004-04-14 devnull 2. The origin of this software must not be misrepresented; you must
32 ff3adf60 2004-04-14 devnull not claim that you wrote the original software. If you use this
33 ff3adf60 2004-04-14 devnull software in a product, an acknowledgment in the product
34 ff3adf60 2004-04-14 devnull documentation would be appreciated but is not required.
35 ff3adf60 2004-04-14 devnull
36 ff3adf60 2004-04-14 devnull 3. Altered source versions must be plainly marked as such, and must
37 ff3adf60 2004-04-14 devnull not be misrepresented as being the original software.
38 ff3adf60 2004-04-14 devnull
39 ff3adf60 2004-04-14 devnull 4. The name of the author may not be used to endorse or promote
40 ff3adf60 2004-04-14 devnull products derived from this software without specific prior written
41 ff3adf60 2004-04-14 devnull permission.
42 ff3adf60 2004-04-14 devnull
43 ff3adf60 2004-04-14 devnull THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
44 ff3adf60 2004-04-14 devnull OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
45 ff3adf60 2004-04-14 devnull WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
46 ff3adf60 2004-04-14 devnull ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
47 ff3adf60 2004-04-14 devnull DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
48 ff3adf60 2004-04-14 devnull DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
49 ff3adf60 2004-04-14 devnull GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
50 ff3adf60 2004-04-14 devnull INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
51 ff3adf60 2004-04-14 devnull WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
52 ff3adf60 2004-04-14 devnull NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
53 ff3adf60 2004-04-14 devnull SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
54 ff3adf60 2004-04-14 devnull
55 ff3adf60 2004-04-14 devnull Julian Seward, Cambridge, UK.
56 ff3adf60 2004-04-14 devnull jseward@acm.org
57 ff3adf60 2004-04-14 devnull bzip2/libbzip2 version 1.0 of 21 March 2000
58 ff3adf60 2004-04-14 devnull
59 ff3adf60 2004-04-14 devnull This program is based on (at least) the work of:
60 ff3adf60 2004-04-14 devnull Mike Burrows
61 ff3adf60 2004-04-14 devnull David Wheeler
62 ff3adf60 2004-04-14 devnull Peter Fenwick
63 ff3adf60 2004-04-14 devnull Alistair Moffat
64 ff3adf60 2004-04-14 devnull Radford Neal
65 ff3adf60 2004-04-14 devnull Ian H. Witten
66 ff3adf60 2004-04-14 devnull Robert Sedgewick
67 ff3adf60 2004-04-14 devnull Jon L. Bentley
68 ff3adf60 2004-04-14 devnull
69 ff3adf60 2004-04-14 devnull For more information on these sources, see the manual.
70 ff3adf60 2004-04-14 devnull --*/
71 ff3adf60 2004-04-14 devnull
72 ff3adf60 2004-04-14 devnull /*--
73 ff3adf60 2004-04-14 devnull CHANGES
74 ff3adf60 2004-04-14 devnull ~~~~~~~
75 ff3adf60 2004-04-14 devnull 0.9.0 -- original version.
76 ff3adf60 2004-04-14 devnull
77 ff3adf60 2004-04-14 devnull 0.9.0a/b -- no changes in this file.
78 ff3adf60 2004-04-14 devnull
79 ff3adf60 2004-04-14 devnull 0.9.0c
80 ff3adf60 2004-04-14 devnull * made zero-length BZ_FLUSH work correctly in bzCompress().
81 ff3adf60 2004-04-14 devnull * fixed bzWrite/bzRead to ignore zero-length requests.
82 ff3adf60 2004-04-14 devnull * fixed bzread to correctly handle read requests after EOF.
83 ff3adf60 2004-04-14 devnull * wrong parameter order in call to bzDecompressInit in
84 ff3adf60 2004-04-14 devnull bzBuffToBuffDecompress. Fixed.
85 ff3adf60 2004-04-14 devnull --*/
86 ff3adf60 2004-04-14 devnull
87 ff3adf60 2004-04-14 devnull #include <stdio.h>
88 ff3adf60 2004-04-14 devnull
89 ff3adf60 2004-04-14 devnull #define BZ_MAX_UNUSED 5000
90 ff3adf60 2004-04-14 devnull
91 ff3adf60 2004-04-14 devnull typedef void BZFILE;
92 ff3adf60 2004-04-14 devnull
93 ff3adf60 2004-04-14 devnull BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) (
94 ff3adf60 2004-04-14 devnull const char *path,
95 ff3adf60 2004-04-14 devnull const char *mode
96 ff3adf60 2004-04-14 devnull );
97 ff3adf60 2004-04-14 devnull
98 ff3adf60 2004-04-14 devnull BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) (
99 ff3adf60 2004-04-14 devnull int fd,
100 ff3adf60 2004-04-14 devnull const char *mode
101 ff3adf60 2004-04-14 devnull );
102 ff3adf60 2004-04-14 devnull
103 ff3adf60 2004-04-14 devnull BZ_EXTERN int BZ_API(BZ2_bzread) (
104 ff3adf60 2004-04-14 devnull BZFILE* b,
105 ff3adf60 2004-04-14 devnull void* buf,
106 ff3adf60 2004-04-14 devnull int len
107 ff3adf60 2004-04-14 devnull );
108 ff3adf60 2004-04-14 devnull
109 ff3adf60 2004-04-14 devnull BZ_EXTERN int BZ_API(BZ2_bzwrite) (
110 ff3adf60 2004-04-14 devnull BZFILE* b,
111 ff3adf60 2004-04-14 devnull void* buf,
112 ff3adf60 2004-04-14 devnull int len
113 ff3adf60 2004-04-14 devnull );
114 ff3adf60 2004-04-14 devnull
115 ff3adf60 2004-04-14 devnull BZ_EXTERN int BZ_API(BZ2_bzflush) (
116 ff3adf60 2004-04-14 devnull BZFILE* b
117 ff3adf60 2004-04-14 devnull );
118 ff3adf60 2004-04-14 devnull
119 ff3adf60 2004-04-14 devnull BZ_EXTERN void BZ_API(BZ2_bzclose) (
120 ff3adf60 2004-04-14 devnull BZFILE* b
121 ff3adf60 2004-04-14 devnull );
122 ff3adf60 2004-04-14 devnull
123 ff3adf60 2004-04-14 devnull BZ_EXTERN const char * BZ_API(BZ2_bzerror) (
124 ff3adf60 2004-04-14 devnull BZFILE *b,
125 ff3adf60 2004-04-14 devnull int *errnum
126 ff3adf60 2004-04-14 devnull );
127 ff3adf60 2004-04-14 devnull
128 ff3adf60 2004-04-14 devnull
129 ff3adf60 2004-04-14 devnull /*-- High(er) level library functions --*/
130 ff3adf60 2004-04-14 devnull BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) (
131 ff3adf60 2004-04-14 devnull int* bzerror,
132 ff3adf60 2004-04-14 devnull FILE* f,
133 ff3adf60 2004-04-14 devnull int verbosity,
134 ff3adf60 2004-04-14 devnull int small,
135 ff3adf60 2004-04-14 devnull void* unused,
136 ff3adf60 2004-04-14 devnull int nUnused
137 ff3adf60 2004-04-14 devnull );
138 ff3adf60 2004-04-14 devnull
139 ff3adf60 2004-04-14 devnull BZ_EXTERN void BZ_API(BZ2_bzReadClose) (
140 ff3adf60 2004-04-14 devnull int* bzerror,
141 ff3adf60 2004-04-14 devnull BZFILE* b
142 ff3adf60 2004-04-14 devnull );
143 ff3adf60 2004-04-14 devnull
144 ff3adf60 2004-04-14 devnull BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) (
145 ff3adf60 2004-04-14 devnull int* bzerror,
146 ff3adf60 2004-04-14 devnull BZFILE* b,
147 ff3adf60 2004-04-14 devnull void** unused,
148 ff3adf60 2004-04-14 devnull int* nUnused
149 ff3adf60 2004-04-14 devnull );
150 ff3adf60 2004-04-14 devnull
151 ff3adf60 2004-04-14 devnull BZ_EXTERN int BZ_API(BZ2_bzRead) (
152 ff3adf60 2004-04-14 devnull int* bzerror,
153 ff3adf60 2004-04-14 devnull BZFILE* b,
154 ff3adf60 2004-04-14 devnull void* buf,
155 ff3adf60 2004-04-14 devnull int len
156 ff3adf60 2004-04-14 devnull );
157 ff3adf60 2004-04-14 devnull
158 ff3adf60 2004-04-14 devnull BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) (
159 ff3adf60 2004-04-14 devnull int* bzerror,
160 ff3adf60 2004-04-14 devnull FILE* f,
161 ff3adf60 2004-04-14 devnull int blockSize100k,
162 ff3adf60 2004-04-14 devnull int verbosity,
163 ff3adf60 2004-04-14 devnull int workFactor
164 ff3adf60 2004-04-14 devnull );
165 ff3adf60 2004-04-14 devnull
166 ff3adf60 2004-04-14 devnull BZ_EXTERN void BZ_API(BZ2_bzWrite) (
167 ff3adf60 2004-04-14 devnull int* bzerror,
168 ff3adf60 2004-04-14 devnull BZFILE* b,
169 ff3adf60 2004-04-14 devnull void* buf,
170 ff3adf60 2004-04-14 devnull int len
171 ff3adf60 2004-04-14 devnull );
172 ff3adf60 2004-04-14 devnull
173 ff3adf60 2004-04-14 devnull BZ_EXTERN void BZ_API(BZ2_bzWriteClose) (
174 ff3adf60 2004-04-14 devnull int* bzerror,
175 ff3adf60 2004-04-14 devnull BZFILE* b,
176 ff3adf60 2004-04-14 devnull int abandon,
177 ff3adf60 2004-04-14 devnull unsigned int* nbytes_in,
178 ff3adf60 2004-04-14 devnull unsigned int* nbytes_out
179 ff3adf60 2004-04-14 devnull );
180 ff3adf60 2004-04-14 devnull
181 ff3adf60 2004-04-14 devnull BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) (
182 ff3adf60 2004-04-14 devnull int* bzerror,
183 ff3adf60 2004-04-14 devnull BZFILE* b,
184 ff3adf60 2004-04-14 devnull int abandon,
185 ff3adf60 2004-04-14 devnull unsigned int* nbytes_in_lo32,
186 ff3adf60 2004-04-14 devnull unsigned int* nbytes_in_hi32,
187 ff3adf60 2004-04-14 devnull unsigned int* nbytes_out_lo32,
188 ff3adf60 2004-04-14 devnull unsigned int* nbytes_out_hi32
189 ff3adf60 2004-04-14 devnull );
190 ff3adf60 2004-04-14 devnull