1#
2# CDDL HEADER START
3#
4# The contents of this file are subject to the terms of the
5# Common Development and Distribution License (the "License").
6# You may not use this file except in compliance with the License.
7#
8# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9# or http://www.opensolaris.org/os/licensing.
10# See the License for the specific language governing permissions
11# and limitations under the License.
12#
13# When distributing Covered Code, include this CDDL HEADER in each
14# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15# If applicable, add the following below this CDDL HEADER, with the
16# fields enclosed by brackets "[]" replaced with your own identifying
17# information: Portions Copyright [yyyy] [name of copyright owner]
18#
19# CDDL HEADER END
20#
21#
22# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23# Use is subject to license terms.
24#
25
26The source in this directory has been derived from libbzip2 version
271.0.6 downloaded from http://www.bzip.org.
28
29In an effort to provide ease of syncing with the upstream code, this
30source hasn't changed much. The usual Solaris coding standards have
31been waived. It does not pass cstyle. But, enough modifications were
32made so that the code does compile and lint cleanly.
33
34Some modifications have been made for use in the Solaris kernel:
351) compilation errors were corrected
362) lint complaints were fixed
373) a few utility interfaces were added
38	BZ2_bzCompressInitSize
39	BZ2_bzCompressReset
40	BZ2_bzDecompressReset
41	BZ2_bzErrorString
42
43
44Here is a complete list of changes made by Sun to the original 1.0.6
45source:
46
47diff -u bzip2-1.0.6/bzlib.c ./bzlib.c
48--- bzip2-1.0.6/bzlib.c	Fri Sep 10 18:38:23 2010
49+++ ./bzlib.c	Wed Dec 29 20:47:11 2010
50@@ -96,11 +96,89 @@
51    return 1;
52 }
53
54+/*
55+ * Added for Solaris kernel
56+ */
57+#define BZES \
58+BZE(BZ_OK) \
59+BZE(BZ_RUN_OK) \
60+BZE(BZ_FLUSH_OK) \
61+BZE(BZ_FINISH_OK) \
62+BZE(BZ_STREAM_END) \
63+BZE(BZ_SEQUENCE_ERROR) \
64+BZE(BZ_PARAM_ERROR) \
65+BZE(BZ_MEM_ERROR) \
66+BZE(BZ_DATA_ERROR) \
67+BZE(BZ_DATA_ERROR_MAGIC) \
68+BZE(BZ_IO_ERROR) \
69+BZE(BZ_UNEXPECTED_EOF) \
70+BZE(BZ_OUTBUFF_FULL) \
71+BZE(BZ_CONFIG_ERROR)
72
73+BZ_EXTERN const char * BZ_API(BZ2_bzErrorString) (
74+      int error_code
75+   )
76+{
77+	switch (error_code)
78+	{
79+#define BZE(x) case x: return (#x);
80+BZES
81+#undef BZE
82+	}
83+	return ("BZ_UNKNOWN_ERROR");
84+}
85+
86+#include <sys/sysmacros.h>
87+
88+#ifdef _KERNEL
89+
90+#include <sys/types.h>
91+#include <sys/cmn_err.h>
92+#include <sys/kmem.h>
93+
94+void
95+bz_internal_error(int errcode)
96+{
97+	panic("bzip2 internal error: %s\n", BZ2_bzErrorString(errcode));
98+}
99+
100 /*---------------------------------------------------*/
101+typedef struct {
102+	char *buf;
103+	size_t sz;
104+} bzap;
105+
106 static
107 void* default_bzalloc ( void* opaque, Int32 items, Int32 size )
108 {
109+	size_t sz = sizeof (bzap) + BZ2_BZALLOC_ALIGN + (items * size);
110+	uintptr_t p = (uintptr_t)kmem_alloc(sz, KM_SLEEP);
111+
112+	if (p != NULL) {
113+		bzap *pp = (bzap *)((p + sizeof (bzap) + BZ2_BZALLOC_ALIGN - 1) &
114+		    -BZ2_BZALLOC_ALIGN);
115+		pp[-1].buf = (void *)p;
116+		pp[-1].sz = sz;
117+		return (pp);
118+	}
119+	return (NULL);
120+}
121+
122+static
123+void default_bzfree ( void* opaque, void* addr )
124+{
125+	if (addr != NULL) {
126+		bzap *pp = (bzap *)addr - 1;
127+		kmem_free(pp->buf, pp->sz);
128+	}
129+}
130+
131+#else
132+
133+/*---------------------------------------------------*/
134+static
135+void* default_bzalloc ( void* opaque, Int32 items, Int32 size )
136+{
137    void* v = malloc ( items * size );
138    return v;
139 }
140@@ -110,8 +188,8 @@
141 {
142    if (addr != NULL) free ( addr );
143 }
144+#endif	/* _KERNEL */
145
146-
147 /*---------------------------------------------------*/
148 static
149 void prepare_new_block ( EState* s )
150@@ -210,8 +288,92 @@
151    return BZ_OK;
152 }
153
154+/*---------------------------------------------------*/
155+/*
156+ * returns the BZALLOC size needed for bzCompressInit
157+ */
158+int BZ_API(BZ2_bzCompressInitSize) (
159+                     int        blockSize100k)
160+{
161+   Int32   n, t;
162
163+   n       = 100000 * blockSize100k;
164+   t       = 0;
165+   t += ( sizeof(EState) );
166+   t = P2ROUNDUP(t, BZ2_BZALLOC_ALIGN);
167+   t += ( n                  * sizeof(UInt32) );
168+   t = P2ROUNDUP(t, BZ2_BZALLOC_ALIGN);
169+   t += ( (n+BZ_N_OVERSHOOT) * sizeof(UInt32) );
170+   t = P2ROUNDUP(t, BZ2_BZALLOC_ALIGN);
171+   t += ( 65537              * sizeof(UInt32) );
172+   t = P2ROUNDUP(t, BZ2_BZALLOC_ALIGN);
173+   return (t);
174+}
175+
176 /*---------------------------------------------------*/
177+/*
178+ * added to allow reuse of bz_stream without malloc/free
179+ */
180+int BZ_API(BZ2_bzCompressReset) ( bz_stream *strm )
181+{
182+   EState* s = strm->state;
183+
184+   if (!bz_config_ok()) return BZ_CONFIG_ERROR;
185+
186+   if (s == NULL) return BZ_MEM_ERROR;
187+   s->strm = strm;
188+
189+   s->blockNo           = 0;
190+   s->state             = BZ_S_INPUT;
191+   s->mode              = BZ_M_RUNNING;
192+   s->combinedCRC       = 0;
193+   s->nblockMAX         = 100000 * s->blockSize100k - 19;
194+
195+   s->block             = (UChar*)s->arr2;
196+   s->mtfv              = (UInt16*)s->arr1;
197+   s->zbits             = NULL;
198+   s->ptr               = (UInt32*)s->arr1;
199+
200+   strm->state          = s;
201+   strm->total_in_lo32  = 0;
202+   strm->total_in_hi32  = 0;
203+   strm->total_out_lo32 = 0;
204+   strm->total_out_hi32 = 0;
205+   init_RL ( s );
206+   prepare_new_block ( s );
207+   return BZ_OK;
208+}
209+
210+int BZ_API(BZ2_bzDecompressReset) ( bz_stream* strm )
211+{
212+   DState* s = strm->state;
213+
214+   if (!bz_config_ok()) return BZ_CONFIG_ERROR;
215+
216+   if (strm == NULL) return BZ_PARAM_ERROR;
217+
218+   s->strm                  = strm;
219+
220+   s->state                 = BZ_X_MAGIC_1;
221+   s->bsLive                = 0;
222+   s->bsBuff                = 0;
223+   s->calculatedCombinedCRC = 0;
224+   strm->total_in_lo32      = 0;
225+   strm->total_in_hi32      = 0;
226+   strm->total_out_lo32     = 0;
227+   strm->total_out_hi32     = 0;
228+
229+   s->ll4                   = NULL;
230+   s->ll16                  = NULL;
231+   s->tt                    = NULL;
232+   s->currBlockNo           = 0;
233+
234+
235+   return BZ_OK;
236+}
237+
238+
239+/*---------------------------------------------------*/
240 static
241 void add_pair_to_block ( EState* s )
242 {
243@@ -852,9 +1014,11 @@
244       }
245    }
246
247+#if 0
248    AssertH ( 0, 6001 );
249
250    return 0;  /*NOTREACHED*/
251+#endif
252 }
253
254
255@@ -1078,7 +1242,7 @@
256       *nbytes_out_hi32 = bzf->strm.total_out_hi32;
257
258    BZ_SETERR(BZ_OK);
259-   BZ2_bzCompressEnd ( &(bzf->strm) );
260+   (void) BZ2_bzCompressEnd ( &(bzf->strm) );
261    free ( bzf );
262 }
263
264@@ -1152,7 +1316,7 @@
265       { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
266
267    if (bzf->initialisedOk)
268-      (void)BZ2_bzDecompressEnd ( &(bzf->strm) );
269+      (void) BZ2_bzDecompressEnd ( &(bzf->strm) );
270    free ( bzf );
271 }
272
273@@ -1282,15 +1446,15 @@
274
275    /* normal termination */
276    *destLen -= strm.avail_out;
277-   BZ2_bzCompressEnd ( &strm );
278+   (void) BZ2_bzCompressEnd ( &strm );
279    return BZ_OK;
280
281    output_overflow:
282-   BZ2_bzCompressEnd ( &strm );
283+   (void) BZ2_bzCompressEnd ( &strm );
284    return BZ_OUTBUFF_FULL;
285
286    errhandler:
287-   BZ2_bzCompressEnd ( &strm );
288+   (void) BZ2_bzCompressEnd ( &strm );
289    return ret;
290 }
291
292@@ -1330,20 +1494,20 @@
293
294    /* normal termination */
295    *destLen -= strm.avail_out;
296-   BZ2_bzDecompressEnd ( &strm );
297+   (void) BZ2_bzDecompressEnd ( &strm );
298    return BZ_OK;
299
300    output_overflow_or_eof:
301    if (strm.avail_out > 0) {
302-      BZ2_bzDecompressEnd ( &strm );
303+      (void) BZ2_bzDecompressEnd ( &strm );
304       return BZ_UNEXPECTED_EOF;
305    } else {
306-      BZ2_bzDecompressEnd ( &strm );
307+      (void) BZ2_bzDecompressEnd ( &strm );
308       return BZ_OUTBUFF_FULL;
309-   };
310+   }
311
312    errhandler:
313-   BZ2_bzDecompressEnd ( &strm );
314+   (void) BZ2_bzDecompressEnd ( &strm );
315    return ret;
316 }
317
318diff -u bzip2-1.0.6/bzlib.h ./bzlib.h
319--- bzip2-1.0.6/bzlib.h	Fri Sep 10 19:08:42 2010
320+++ ./bzlib.h	Wed Dec 29 20:59:21 2010
321@@ -18,10 +18,13 @@
322    in the file LICENSE.
323    ------------------------------------------------------------------ */
324
325-
326 #ifndef _BZLIB_H
327 #define _BZLIB_H
328
329+#ifdef _KERNEL
330+#define	BZ_NO_STDIO
331+#endif
332+
333 #ifdef __cplusplus
334 extern "C" {
335 #endif
336@@ -97,6 +100,8 @@
337
338 /*-- Core (low-level) library functions --*/
339
340+#define	BZ2_BZALLOC_ALIGN	(64)
341+
342 BZ_EXTERN int BZ_API(BZ2_bzCompressInit) (
343       bz_stream* strm,
344       int        blockSize100k,
345@@ -104,6 +109,14 @@
346       int        workFactor
347    );
348
349+BZ_EXTERN int BZ_API(BZ2_bzCompressInitSize) (
350+      int        blockSize100k
351+   );
352+
353+BZ_EXTERN int BZ_API(BZ2_bzCompressReset) (
354+      bz_stream* strm
355+   );
356+
357 BZ_EXTERN int BZ_API(BZ2_bzCompress) (
358       bz_stream* strm,
359       int action
360@@ -119,6 +132,10 @@
361       int       small
362    );
363
364+BZ_EXTERN int BZ_API(BZ2_bzDecompressReset) (
365+      bz_stream* strm
366+   );
367+
368 BZ_EXTERN int BZ_API(BZ2_bzDecompress) (
369       bz_stream* strm
370    );
371@@ -127,8 +144,12 @@
372       bz_stream *strm
373    );
374
375+BZ_EXTERN const char * BZ_API(BZ2_bzErrorString) (
376+      int error_code
377+   );
378
379
380+
381 /*-- High(er) level library functions --*/
382
383 #ifndef BZ_NO_STDIO
384@@ -275,8 +296,7 @@
385 }
386 #endif
387
388-#endif
389-
390 /*-------------------------------------------------------------*/
391 /*--- end                                           bzlib.h ---*/
392 /*-------------------------------------------------------------*/
393+#endif /* _BZLIB_H */
394diff -u bzip2-1.0.6/bzlib_private.h ./bzlib_private.h
395--- bzip2-1.0.6/bzlib_private.h	Fri Sep 10 18:41:55 2010
396+++ ./bzlib_private.h	Wed Dec 29 21:01:01 2010
397@@ -22,7 +22,11 @@
398 #ifndef _BZLIB_PRIVATE_H
399 #define _BZLIB_PRIVATE_H
400
401+#ifdef _KERNEL
402+#define	BZ_NO_STDIO
403+#else
404 #include <stdlib.h>
405+#endif
406
407 #ifndef BZ_NO_STDIO
408 #include <stdio.h>
409@@ -85,9 +89,10 @@
410
411 #else
412
413+#pragma weak bz_internal_error
414 extern void bz_internal_error ( int errcode );
415 #define AssertH(cond,errcode) \
416-   { if (!(cond)) bz_internal_error ( errcode ); }
417+   { if (!(cond) && &bz_internal_error != NULL) bz_internal_error ( errcode ); }
418 #define AssertD(cond,msg)                do { } while (0)
419 #define VPrintf0(zf)                     do { } while (0)
420 #define VPrintf1(zf,za1)                 do { } while (0)
421@@ -156,7 +161,7 @@
422
423 #define BZ_INITIALISE_CRC(crcVar)              \
424 {                                              \
425-   crcVar = 0xffffffffL;                       \
426+   crcVar = 0xffffffffUL;                      \
427 }
428
429 #define BZ_FINALISE_CRC(crcVar)                \
430@@ -492,9 +497,6 @@
431                            Int32,  Int32, Int32 );
432
433
434-#endif
435-
436-
437 /*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/
438
439 #ifdef BZ_NO_STDIO
440@@ -507,3 +509,4 @@
441 /*-------------------------------------------------------------*/
442 /*--- end                                   bzlib_private.h ---*/
443 /*-------------------------------------------------------------*/
444+#endif	/* _BZLIB_PRIVATE_H */
445diff -u bzip2-1.0.6/crctable.c ./crctable.c
446--- bzip2-1.0.6/crctable.c	Fri Sep 10 18:43:34 2010
447+++ ./crctable.c	Wed Dec 29 21:01:57 2010
448@@ -32,70 +32,70 @@
449
450    /*-- Ugly, innit? --*/
451
452-   0x00000000L, 0x04c11db7L, 0x09823b6eL, 0x0d4326d9L,
453-   0x130476dcL, 0x17c56b6bL, 0x1a864db2L, 0x1e475005L,
454-   0x2608edb8L, 0x22c9f00fL, 0x2f8ad6d6L, 0x2b4bcb61L,
455-   0x350c9b64L, 0x31cd86d3L, 0x3c8ea00aL, 0x384fbdbdL,
456-   0x4c11db70L, 0x48d0c6c7L, 0x4593e01eL, 0x4152fda9L,
457-   0x5f15adacL, 0x5bd4b01bL, 0x569796c2L, 0x52568b75L,
458-   0x6a1936c8L, 0x6ed82b7fL, 0x639b0da6L, 0x675a1011L,
459-   0x791d4014L, 0x7ddc5da3L, 0x709f7b7aL, 0x745e66cdL,
460-   0x9823b6e0L, 0x9ce2ab57L, 0x91a18d8eL, 0x95609039L,
461-   0x8b27c03cL, 0x8fe6dd8bL, 0x82a5fb52L, 0x8664e6e5L,
462-   0xbe2b5b58L, 0xbaea46efL, 0xb7a96036L, 0xb3687d81L,
463-   0xad2f2d84L, 0xa9ee3033L, 0xa4ad16eaL, 0xa06c0b5dL,
464-   0xd4326d90L, 0xd0f37027L, 0xddb056feL, 0xd9714b49L,
465-   0xc7361b4cL, 0xc3f706fbL, 0xceb42022L, 0xca753d95L,
466-   0xf23a8028L, 0xf6fb9d9fL, 0xfbb8bb46L, 0xff79a6f1L,
467-   0xe13ef6f4L, 0xe5ffeb43L, 0xe8bccd9aL, 0xec7dd02dL,
468-   0x34867077L, 0x30476dc0L, 0x3d044b19L, 0x39c556aeL,
469-   0x278206abL, 0x23431b1cL, 0x2e003dc5L, 0x2ac12072L,
470-   0x128e9dcfL, 0x164f8078L, 0x1b0ca6a1L, 0x1fcdbb16L,
471-   0x018aeb13L, 0x054bf6a4L, 0x0808d07dL, 0x0cc9cdcaL,
472-   0x7897ab07L, 0x7c56b6b0L, 0x71159069L, 0x75d48ddeL,
473-   0x6b93dddbL, 0x6f52c06cL, 0x6211e6b5L, 0x66d0fb02L,
474-   0x5e9f46bfL, 0x5a5e5b08L, 0x571d7dd1L, 0x53dc6066L,
475-   0x4d9b3063L, 0x495a2dd4L, 0x44190b0dL, 0x40d816baL,
476-   0xaca5c697L, 0xa864db20L, 0xa527fdf9L, 0xa1e6e04eL,
477-   0xbfa1b04bL, 0xbb60adfcL, 0xb6238b25L, 0xb2e29692L,
478-   0x8aad2b2fL, 0x8e6c3698L, 0x832f1041L, 0x87ee0df6L,
479-   0x99a95df3L, 0x9d684044L, 0x902b669dL, 0x94ea7b2aL,
480-   0xe0b41de7L, 0xe4750050L, 0xe9362689L, 0xedf73b3eL,
481-   0xf3b06b3bL, 0xf771768cL, 0xfa325055L, 0xfef34de2L,
482-   0xc6bcf05fL, 0xc27dede8L, 0xcf3ecb31L, 0xcbffd686L,
483-   0xd5b88683L, 0xd1799b34L, 0xdc3abdedL, 0xd8fba05aL,
484-   0x690ce0eeL, 0x6dcdfd59L, 0x608edb80L, 0x644fc637L,
485-   0x7a089632L, 0x7ec98b85L, 0x738aad5cL, 0x774bb0ebL,
486-   0x4f040d56L, 0x4bc510e1L, 0x46863638L, 0x42472b8fL,
487-   0x5c007b8aL, 0x58c1663dL, 0x558240e4L, 0x51435d53L,
488-   0x251d3b9eL, 0x21dc2629L, 0x2c9f00f0L, 0x285e1d47L,
489-   0x36194d42L, 0x32d850f5L, 0x3f9b762cL, 0x3b5a6b9bL,
490-   0x0315d626L, 0x07d4cb91L, 0x0a97ed48L, 0x0e56f0ffL,
491-   0x1011a0faL, 0x14d0bd4dL, 0x19939b94L, 0x1d528623L,
492-   0xf12f560eL, 0xf5ee4bb9L, 0xf8ad6d60L, 0xfc6c70d7L,
493-   0xe22b20d2L, 0xe6ea3d65L, 0xeba91bbcL, 0xef68060bL,
494-   0xd727bbb6L, 0xd3e6a601L, 0xdea580d8L, 0xda649d6fL,
495-   0xc423cd6aL, 0xc0e2d0ddL, 0xcda1f604L, 0xc960ebb3L,
496-   0xbd3e8d7eL, 0xb9ff90c9L, 0xb4bcb610L, 0xb07daba7L,
497-   0xae3afba2L, 0xaafbe615L, 0xa7b8c0ccL, 0xa379dd7bL,
498-   0x9b3660c6L, 0x9ff77d71L, 0x92b45ba8L, 0x9675461fL,
499-   0x8832161aL, 0x8cf30badL, 0x81b02d74L, 0x857130c3L,
500-   0x5d8a9099L, 0x594b8d2eL, 0x5408abf7L, 0x50c9b640L,
501-   0x4e8ee645L, 0x4a4ffbf2L, 0x470cdd2bL, 0x43cdc09cL,
502-   0x7b827d21L, 0x7f436096L, 0x7200464fL, 0x76c15bf8L,
503-   0x68860bfdL, 0x6c47164aL, 0x61043093L, 0x65c52d24L,
504-   0x119b4be9L, 0x155a565eL, 0x18197087L, 0x1cd86d30L,
505-   0x029f3d35L, 0x065e2082L, 0x0b1d065bL, 0x0fdc1becL,
506-   0x3793a651L, 0x3352bbe6L, 0x3e119d3fL, 0x3ad08088L,
507-   0x2497d08dL, 0x2056cd3aL, 0x2d15ebe3L, 0x29d4f654L,
508-   0xc5a92679L, 0xc1683bceL, 0xcc2b1d17L, 0xc8ea00a0L,
509-   0xd6ad50a5L, 0xd26c4d12L, 0xdf2f6bcbL, 0xdbee767cL,
510-   0xe3a1cbc1L, 0xe760d676L, 0xea23f0afL, 0xeee2ed18L,
511-   0xf0a5bd1dL, 0xf464a0aaL, 0xf9278673L, 0xfde69bc4L,
512-   0x89b8fd09L, 0x8d79e0beL, 0x803ac667L, 0x84fbdbd0L,
513-   0x9abc8bd5L, 0x9e7d9662L, 0x933eb0bbL, 0x97ffad0cL,
514-   0xafb010b1L, 0xab710d06L, 0xa6322bdfL, 0xa2f33668L,
515-   0xbcb4666dL, 0xb8757bdaL, 0xb5365d03L, 0xb1f740b4L
516+   0x00000000UL, 0x04c11db7UL, 0x09823b6eUL, 0x0d4326d9UL,
517+   0x130476dcUL, 0x17c56b6bUL, 0x1a864db2UL, 0x1e475005UL,
518+   0x2608edb8UL, 0x22c9f00fUL, 0x2f8ad6d6UL, 0x2b4bcb61UL,
519+   0x350c9b64UL, 0x31cd86d3UL, 0x3c8ea00aUL, 0x384fbdbdUL,
520+   0x4c11db70UL, 0x48d0c6c7UL, 0x4593e01eUL, 0x4152fda9UL,
521+   0x5f15adacUL, 0x5bd4b01bUL, 0x569796c2UL, 0x52568b75UL,
522+   0x6a1936c8UL, 0x6ed82b7fUL, 0x639b0da6UL, 0x675a1011UL,
523+   0x791d4014UL, 0x7ddc5da3UL, 0x709f7b7aUL, 0x745e66cdUL,
524+   0x9823b6e0UL, 0x9ce2ab57UL, 0x91a18d8eUL, 0x95609039UL,
525+   0x8b27c03cUL, 0x8fe6dd8bUL, 0x82a5fb52UL, 0x8664e6e5UL,
526+   0xbe2b5b58UL, 0xbaea46efUL, 0xb7a96036UL, 0xb3687d81UL,
527+   0xad2f2d84UL, 0xa9ee3033UL, 0xa4ad16eaUL, 0xa06c0b5dUL,
528+   0xd4326d90UL, 0xd0f37027UL, 0xddb056feUL, 0xd9714b49UL,
529+   0xc7361b4cUL, 0xc3f706fbUL, 0xceb42022UL, 0xca753d95UL,
530+   0xf23a8028UL, 0xf6fb9d9fUL, 0xfbb8bb46UL, 0xff79a6f1UL,
531+   0xe13ef6f4UL, 0xe5ffeb43UL, 0xe8bccd9aUL, 0xec7dd02dUL,
532+   0x34867077UL, 0x30476dc0UL, 0x3d044b19UL, 0x39c556aeUL,
533+   0x278206abUL, 0x23431b1cUL, 0x2e003dc5UL, 0x2ac12072UL,
534+   0x128e9dcfUL, 0x164f8078UL, 0x1b0ca6a1UL, 0x1fcdbb16UL,
535+   0x018aeb13UL, 0x054bf6a4UL, 0x0808d07dUL, 0x0cc9cdcaUL,
536+   0x7897ab07UL, 0x7c56b6b0UL, 0x71159069UL, 0x75d48ddeUL,
537+   0x6b93dddbUL, 0x6f52c06cUL, 0x6211e6b5UL, 0x66d0fb02UL,
538+   0x5e9f46bfUL, 0x5a5e5b08UL, 0x571d7dd1UL, 0x53dc6066UL,
539+   0x4d9b3063UL, 0x495a2dd4UL, 0x44190b0dUL, 0x40d816baUL,
540+   0xaca5c697UL, 0xa864db20UL, 0xa527fdf9UL, 0xa1e6e04eUL,
541+   0xbfa1b04bUL, 0xbb60adfcUL, 0xb6238b25UL, 0xb2e29692UL,
542+   0x8aad2b2fUL, 0x8e6c3698UL, 0x832f1041UL, 0x87ee0df6UL,
543+   0x99a95df3UL, 0x9d684044UL, 0x902b669dUL, 0x94ea7b2aUL,
544+   0xe0b41de7UL, 0xe4750050UL, 0xe9362689UL, 0xedf73b3eUL,
545+   0xf3b06b3bUL, 0xf771768cUL, 0xfa325055UL, 0xfef34de2UL,
546+   0xc6bcf05fUL, 0xc27dede8UL, 0xcf3ecb31UL, 0xcbffd686UL,
547+   0xd5b88683UL, 0xd1799b34UL, 0xdc3abdedUL, 0xd8fba05aUL,
548+   0x690ce0eeUL, 0x6dcdfd59UL, 0x608edb80UL, 0x644fc637UL,
549+   0x7a089632UL, 0x7ec98b85UL, 0x738aad5cUL, 0x774bb0ebUL,
550+   0x4f040d56UL, 0x4bc510e1UL, 0x46863638UL, 0x42472b8fUL,
551+   0x5c007b8aUL, 0x58c1663dUL, 0x558240e4UL, 0x51435d53UL,
552+   0x251d3b9eUL, 0x21dc2629UL, 0x2c9f00f0UL, 0x285e1d47UL,
553+   0x36194d42UL, 0x32d850f5UL, 0x3f9b762cUL, 0x3b5a6b9bUL,
554+   0x0315d626UL, 0x07d4cb91UL, 0x0a97ed48UL, 0x0e56f0ffUL,
555+   0x1011a0faUL, 0x14d0bd4dUL, 0x19939b94UL, 0x1d528623UL,
556+   0xf12f560eUL, 0xf5ee4bb9UL, 0xf8ad6d60UL, 0xfc6c70d7UL,
557+   0xe22b20d2UL, 0xe6ea3d65UL, 0xeba91bbcUL, 0xef68060bUL,
558+   0xd727bbb6UL, 0xd3e6a601UL, 0xdea580d8UL, 0xda649d6fUL,
559+   0xc423cd6aUL, 0xc0e2d0ddUL, 0xcda1f604UL, 0xc960ebb3UL,
560+   0xbd3e8d7eUL, 0xb9ff90c9UL, 0xb4bcb610UL, 0xb07daba7UL,
561+   0xae3afba2UL, 0xaafbe615UL, 0xa7b8c0ccUL, 0xa379dd7bUL,
562+   0x9b3660c6UL, 0x9ff77d71UL, 0x92b45ba8UL, 0x9675461fUL,
563+   0x8832161aUL, 0x8cf30badUL, 0x81b02d74UL, 0x857130c3UL,
564+   0x5d8a9099UL, 0x594b8d2eUL, 0x5408abf7UL, 0x50c9b640UL,
565+   0x4e8ee645UL, 0x4a4ffbf2UL, 0x470cdd2bUL, 0x43cdc09cUL,
566+   0x7b827d21UL, 0x7f436096UL, 0x7200464fUL, 0x76c15bf8UL,
567+   0x68860bfdUL, 0x6c47164aUL, 0x61043093UL, 0x65c52d24UL,
568+   0x119b4be9UL, 0x155a565eUL, 0x18197087UL, 0x1cd86d30UL,
569+   0x029f3d35UL, 0x065e2082UL, 0x0b1d065bUL, 0x0fdc1becUL,
570+   0x3793a651UL, 0x3352bbe6UL, 0x3e119d3fUL, 0x3ad08088UL,
571+   0x2497d08dUL, 0x2056cd3aUL, 0x2d15ebe3UL, 0x29d4f654UL,
572+   0xc5a92679UL, 0xc1683bceUL, 0xcc2b1d17UL, 0xc8ea00a0UL,
573+   0xd6ad50a5UL, 0xd26c4d12UL, 0xdf2f6bcbUL, 0xdbee767cUL,
574+   0xe3a1cbc1UL, 0xe760d676UL, 0xea23f0afUL, 0xeee2ed18UL,
575+   0xf0a5bd1dUL, 0xf464a0aaUL, 0xf9278673UL, 0xfde69bc4UL,
576+   0x89b8fd09UL, 0x8d79e0beUL, 0x803ac667UL, 0x84fbdbd0UL,
577+   0x9abc8bd5UL, 0x9e7d9662UL, 0x933eb0bbUL, 0x97ffad0cUL,
578+   0xafb010b1UL, 0xab710d06UL, 0xa6322bdfUL, 0xa2f33668UL,
579+   0xbcb4666dUL, 0xb8757bdaUL, 0xb5365d03UL, 0xb1f740b4UL
580 };
581
582
583diff -u bzip2-1.0.6/decompress.c ./decompress.c
584--- bzip2-1.0.6/decompress.c	Fri Sep 10 18:43:17 2010
585+++ ./decompress.c	Fri Dec 31 00:58:25 2010
586@@ -38,7 +38,7 @@
587
588 /*---------------------------------------------------*/
589 #define RETURN(rrr)                               \
590-   { retVal = rrr; goto save_state_and_return; };
591+   { retVal = rrr; goto save_state_and_return; }
592
593 #define GET_BITS(lll,vvv,nnn)                     \
594    case lll: s->state = lll;                      \
595@@ -505,13 +505,13 @@
596       for (i = 0; i <= 256; i++) {
597          if (s->cftab[i] < 0 || s->cftab[i] > nblock) {
598             /* s->cftab[i] can legitimately be == nblock */
599-            RETURN(BZ_DATA_ERROR);
600+            RETURN(BZ_DATA_ERROR)
601          }
602       }
603       /* Check: cftab entries non-descending. */
604       for (i = 1; i <= 256; i++) {
605          if (s->cftab[i-1] > s->cftab[i]) {
606-            RETURN(BZ_DATA_ERROR);
607+            RETURN(BZ_DATA_ERROR)
608          }
609       }
610
611@@ -575,7 +575,7 @@
612
613       }
614
615-      RETURN(BZ_OK);
616+      RETURN(BZ_OK)
617
618
619
620@@ -603,7 +603,7 @@
621       s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
622
623       s->state = BZ_X_IDLE;
624-      RETURN(BZ_STREAM_END);
625+      RETURN(BZ_STREAM_END)
626
627       default: AssertH ( False, 4001 );
628    }
629