aboutsummaryrefslogtreecommitdiff
path: root/contrib/bzip2
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/bzip2')
-rw-r--r--contrib/bzip2/CHANGES327
-rw-r--r--contrib/bzip2/FREEBSD-Xlist24
-rw-r--r--contrib/bzip2/FREEBSD-upgrade27
-rw-r--r--contrib/bzip2/FREEBSD-vendor5
-rw-r--r--contrib/bzip2/LICENSE42
-rw-r--r--contrib/bzip2/Makefile217
-rw-r--r--contrib/bzip2/Makefile-libbz2_so59
-rw-r--r--contrib/bzip2/README215
-rw-r--r--contrib/bzip2/README.COMPILATION.PROBLEMS58
-rw-r--r--contrib/bzip2/blocksort.c1094
-rw-r--r--contrib/bzip2/bzip2.1454
-rw-r--r--contrib/bzip2/bzip2.c2034
-rw-r--r--contrib/bzip2/bzip2recover.c514
-rw-r--r--contrib/bzip2/bzlib.c1581
-rw-r--r--contrib/bzip2/bzlib.h282
-rw-r--r--contrib/bzip2/bzlib_private.h509
-rw-r--r--contrib/bzip2/compress.c672
-rw-r--r--contrib/bzip2/crctable.c104
-rw-r--r--contrib/bzip2/decompress.c646
-rw-r--r--contrib/bzip2/dlltest.c175
-rw-r--r--contrib/bzip2/huffman.c205
-rw-r--r--contrib/bzip2/libbz2.def27
-rw-r--r--contrib/bzip2/makefile.msc63
-rw-r--r--contrib/bzip2/randtable.c84
-rw-r--r--contrib/bzip2/sample1.bz2.uu722
-rw-r--r--contrib/bzip2/sample1.ref.gz.uu850
-rw-r--r--contrib/bzip2/sample2.bz2.uu1642
-rw-r--r--contrib/bzip2/sample2.ref.gz.uu1934
-rw-r--r--contrib/bzip2/sample3.bz2.uu9
-rw-r--r--contrib/bzip2/sample3.ref.gz.uu11
-rw-r--r--contrib/bzip2/spewG.c54
-rw-r--r--contrib/bzip2/unzcrash.c141
-rw-r--r--contrib/bzip2/words09
-rw-r--r--contrib/bzip2/words14
-rw-r--r--contrib/bzip2/words25
-rw-r--r--contrib/bzip2/words330
36 files changed, 14829 insertions, 0 deletions
diff --git a/contrib/bzip2/CHANGES b/contrib/bzip2/CHANGES
new file mode 100644
index 000000000000..81e97ca6fa25
--- /dev/null
+++ b/contrib/bzip2/CHANGES
@@ -0,0 +1,327 @@
+ ------------------------------------------------------------------
+ This file is part of bzip2/libbzip2, a program and library for
+ lossless, block-sorting data compression.
+
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+ Please read the WARNING, DISCLAIMER and PATENTS sections in the
+ README file.
+
+ This program is released under the terms of the license contained
+ in the file LICENSE.
+ ------------------------------------------------------------------
+
+
+0.9.0
+~~~~~
+First version.
+
+
+0.9.0a
+~~~~~~
+Removed 'ranlib' from Makefile, since most modern Unix-es
+don't need it, or even know about it.
+
+
+0.9.0b
+~~~~~~
+Fixed a problem with error reporting in bzip2.c. This does not effect
+the library in any way. Problem is: versions 0.9.0 and 0.9.0a (of the
+program proper) compress and decompress correctly, but give misleading
+error messages (internal panics) when an I/O error occurs, instead of
+reporting the problem correctly. This shouldn't give any data loss
+(as far as I can see), but is confusing.
+
+Made the inline declarations disappear for non-GCC compilers.
+
+
+0.9.0c
+~~~~~~
+Fixed some problems in the library pertaining to some boundary cases.
+This makes the library behave more correctly in those situations. The
+fixes apply only to features (calls and parameters) not used by
+bzip2.c, so the non-fixedness of them in previous versions has no
+effect on reliability of bzip2.c.
+
+In bzlib.c:
+ * made zero-length BZ_FLUSH work correctly in bzCompress().
+ * fixed bzWrite/bzRead to ignore zero-length requests.
+ * fixed bzread to correctly handle read requests after EOF.
+ * wrong parameter order in call to bzDecompressInit in
+ bzBuffToBuffDecompress. Fixed.
+
+In compress.c:
+ * changed setting of nGroups in sendMTFValues() so as to
+ do a bit better on small files. This _does_ effect
+ bzip2.c.
+
+
+0.9.5a
+~~~~~~
+Major change: add a fallback sorting algorithm (blocksort.c)
+to give reasonable behaviour even for very repetitive inputs.
+Nuked --repetitive-best and --repetitive-fast since they are
+no longer useful.
+
+Minor changes: mostly a whole bunch of small changes/
+bugfixes in the driver (bzip2.c). Changes pertaining to the
+user interface are:
+
+ allow decompression of symlink'd files to stdout
+ decompress/test files even without .bz2 extension
+ give more accurate error messages for I/O errors
+ when compressing/decompressing to stdout, don't catch control-C
+ read flags from BZIP2 and BZIP environment variables
+ decline to break hard links to a file unless forced with -f
+ allow -c flag even with no filenames
+ preserve file ownerships as far as possible
+ make -s -1 give the expected block size (100k)
+ add a flag -q --quiet to suppress nonessential warnings
+ stop decoding flags after --, so files beginning in - can be handled
+ resolved inconsistent naming: bzcat or bz2cat ?
+ bzip2 --help now returns 0
+
+Programming-level changes are:
+
+ fixed syntax error in GET_LL4 for Borland C++ 5.02
+ let bzBuffToBuffDecompress return BZ_DATA_ERROR{_MAGIC}
+ fix overshoot of mode-string end in bzopen_or_bzdopen
+ wrapped bzlib.h in #ifdef __cplusplus ... extern "C" { ... }
+ close file handles under all error conditions
+ added minor mods so it compiles with DJGPP out of the box
+ fixed Makefile so it doesn't give problems with BSD make
+ fix uninitialised memory reads in dlltest.c
+
+0.9.5b
+~~~~~~
+Open stdin/stdout in binary mode for DJGPP.
+
+0.9.5c
+~~~~~~
+Changed BZ_N_OVERSHOOT to be ... + 2 instead of ... + 1. The + 1
+version could cause the sorted order to be wrong in some extremely
+obscure cases. Also changed setting of quadrant in blocksort.c.
+
+0.9.5d
+~~~~~~
+The only functional change is to make bzlibVersion() in the library
+return the correct string. This has no effect whatsoever on the
+functioning of the bzip2 program or library. Added a couple of casts
+so the library compiles without warnings at level 3 in MS Visual
+Studio 6.0. Included a Y2K statement in the file Y2K_INFO. All other
+changes are minor documentation changes.
+
+1.0
+~~~
+Several minor bugfixes and enhancements:
+
+* Large file support. The library uses 64-bit counters to
+ count the volume of data passing through it. bzip2.c
+ is now compiled with -D_FILE_OFFSET_BITS=64 to get large
+ file support from the C library. -v correctly prints out
+ file sizes greater than 4 gigabytes. All these changes have
+ been made without assuming a 64-bit platform or a C compiler
+ which supports 64-bit ints, so, except for the C library
+ aspect, they are fully portable.
+
+* Decompression robustness. The library/program should be
+ robust to any corruption of compressed data, detecting and
+ handling _all_ corruption, instead of merely relying on
+ the CRCs. What this means is that the program should
+ never crash, given corrupted data, and the library should
+ always return BZ_DATA_ERROR.
+
+* Fixed an obscure race-condition bug only ever observed on
+ Solaris, in which, if you were very unlucky and issued
+ control-C at exactly the wrong time, both input and output
+ files would be deleted.
+
+* Don't run out of file handles on test/decompression when
+ large numbers of files have invalid magic numbers.
+
+* Avoid library namespace pollution. Prefix all exported
+ symbols with BZ2_.
+
+* Minor sorting enhancements from my DCC2000 paper.
+
+* Advance the version number to 1.0, so as to counteract the
+ (false-in-this-case) impression some people have that programs
+ with version numbers less than 1.0 are in some way, experimental,
+ pre-release versions.
+
+* Create an initial Makefile-libbz2_so to build a shared library.
+ Yes, I know I should really use libtool et al ...
+
+* Make the program exit with 2 instead of 0 when decompression
+ fails due to a bad magic number (ie, an invalid bzip2 header).
+ Also exit with 1 (as the manual claims :-) whenever a diagnostic
+ message would have been printed AND the corresponding operation
+ is aborted, for example
+ bzip2: Output file xx already exists.
+ When a diagnostic message is printed but the operation is not
+ aborted, for example
+ bzip2: Can't guess original name for wurble -- using wurble.out
+ then the exit value 0 is returned, unless some other problem is
+ also detected.
+
+ I think it corresponds more closely to what the manual claims now.
+
+
+1.0.1
+~~~~~
+* Modified dlltest.c so it uses the new BZ2_ naming scheme.
+* Modified makefile-msc to fix minor build probs on Win2k.
+* Updated README.COMPILATION.PROBLEMS.
+
+There are no functionality changes or bug fixes relative to version
+1.0.0. This is just a documentation update + a fix for minor Win32
+build problems. For almost everyone, upgrading from 1.0.0 to 1.0.1 is
+utterly pointless. Don't bother.
+
+
+1.0.2
+~~~~~
+A bug fix release, addressing various minor issues which have appeared
+in the 18 or so months since 1.0.1 was released. Most of the fixes
+are to do with file-handling or documentation bugs. To the best of my
+knowledge, there have been no data-loss-causing bugs reported in the
+compression/decompression engine of 1.0.0 or 1.0.1.
+
+Note that this release does not improve the rather crude build system
+for Unix platforms. The general plan here is to autoconfiscate/
+libtoolise 1.0.2 soon after release, and release the result as 1.1.0
+or perhaps 1.2.0. That, however, is still just a plan at this point.
+
+Here are the changes in 1.0.2. Bug-reporters and/or patch-senders in
+parentheses.
+
+* Fix an infinite segfault loop in 1.0.1 when a directory is
+ encountered in -f (force) mode.
+ (Trond Eivind Glomsrod, Nicholas Nethercote, Volker Schmidt)
+
+* Avoid double fclose() of output file on certain I/O error paths.
+ (Solar Designer)
+
+* Don't fail with internal error 1007 when fed a long stream (> 48MB)
+ of byte 251. Also print useful message suggesting that 1007s may be
+ caused by bad memory.
+ (noticed by Juan Pedro Vallejo, fixed by me)
+
+* Fix uninitialised variable silly bug in demo prog dlltest.c.
+ (Jorj Bauer)
+
+* Remove 512-MB limitation on recovered file size for bzip2recover
+ on selected platforms which support 64-bit ints. At the moment
+ all GCC supported platforms, and Win32.
+ (me, Alson van der Meulen)
+
+* Hard-code header byte values, to give correct operation on platforms
+ using EBCDIC as their native character set (IBM's OS/390).
+ (Leland Lucius)
+
+* Copy file access times correctly.
+ (Marty Leisner)
+
+* Add distclean and check targets to Makefile.
+ (Michael Carmack)
+
+* Parameterise use of ar and ranlib in Makefile. Also add $(LDFLAGS).
+ (Rich Ireland, Bo Thorsen)
+
+* Pass -p (create parent dirs as needed) to mkdir during make install.
+ (Jeremy Fusco)
+
+* Dereference symlinks when copying file permissions in -f mode.
+ (Volker Schmidt)
+
+* Majorly simplify implementation of uInt64_qrm10.
+ (Bo Lindbergh)
+
+* Check the input file still exists before deleting the output one,
+ when aborting in cleanUpAndFail().
+ (Joerg Prante, Robert Linden, Matthias Krings)
+
+Also a bunch of patches courtesy of Philippe Troin, the Debian maintainer
+of bzip2:
+
+* Wrapper scripts (with manpages): bzdiff, bzgrep, bzmore.
+
+* Spelling changes and minor enhancements in bzip2.1.
+
+* Avoid race condition between creating the output file and setting its
+ interim permissions safely, by using fopen_output_safely().
+ No changes to bzip2recover since there is no issue with file
+ permissions there.
+
+* do not print senseless report with -v when compressing an empty
+ file.
+
+* bzcat -f works on non-bzip2 files.
+
+* do not try to escape shell meta-characters on unix (the shell takes
+ care of these).
+
+* added --fast and --best aliases for -1 -9 for gzip compatibility.
+
+
+1.0.3 (15 Feb 05)
+~~~~~~~~~~~~~~~~~
+Fixes some minor bugs since the last version, 1.0.2.
+
+* Further robustification against corrupted compressed data.
+ There are currently no known bitstreams which can cause the
+ decompressor to crash, loop or access memory which does not
+ belong to it. If you are using bzip2 or the library to
+ decompress bitstreams from untrusted sources, an upgrade
+ to 1.0.3 is recommended. This fixes CAN-2005-1260.
+
+* The documentation has been converted to XML, from which html
+ and pdf can be derived.
+
+* Various minor bugs in the documentation have been fixed.
+
+* Fixes for various compilation warnings with newer versions of
+ gcc, and on 64-bit platforms.
+
+* The BZ_NO_STDIO cpp symbol was not properly observed in 1.0.2.
+ This has been fixed.
+
+
+1.0.4 (20 Dec 06)
+~~~~~~~~~~~~~~~~~
+Fixes some minor bugs since the last version, 1.0.3.
+
+* Fix file permissions race problem (CAN-2005-0953).
+
+* Avoid possible segfault in BZ2_bzclose. From Coverity's NetBSD
+ scan.
+
+* 'const'/prototype cleanups in the C code.
+
+* Change default install location to /usr/local, and handle multiple
+ 'make install's without error.
+
+* Sanitise file names more carefully in bzgrep. Fixes CAN-2005-0758
+ to the extent that applies to bzgrep.
+
+* Use 'mktemp' rather than 'tempfile' in bzdiff.
+
+* Tighten up a couple of assertions in blocksort.c following automated
+ analysis.
+
+* Fix minor doc/comment bugs.
+
+
+1.0.5 (10 Dec 07)
+~~~~~~~~~~~~~~~~~
+Security fix only. Fixes CERT-FI 20469 as it applies to bzip2.
+
+
+1.0.6 (6 Sept 10)
+~~~~~~~~~~~~~~~~~
+
+* Security fix for CVE-2010-0405. This was reported by Mikolaj
+ Izdebski.
+
+* Make the documentation build on Ubuntu 10.04
diff --git a/contrib/bzip2/FREEBSD-Xlist b/contrib/bzip2/FREEBSD-Xlist
new file mode 100644
index 000000000000..2725621ac285
--- /dev/null
+++ b/contrib/bzip2/FREEBSD-Xlist
@@ -0,0 +1,24 @@
+# $FreeBSD$
+*README.XML.STUFF
+*bz-common.xsl
+*bz-fo.xsl
+*bz-html.xsl
+*bzdiff
+*bzdiff.1
+*bzgrep
+*bzgrep.1
+*bzip.css
+*bzip2.1.preformatted
+*bzip2.txt
+*bzmore
+*bzmore.1
+*dlltest.dsp
+*entities.xml
+*format.pl
+*libbz2.dsp
+*manual.html
+*manual.pdf
+*manual.ps
+*manual.xml
+*mk251.c
+*xmlproc.sh
diff --git a/contrib/bzip2/FREEBSD-upgrade b/contrib/bzip2/FREEBSD-upgrade
new file mode 100644
index 000000000000..48e788a329a4
--- /dev/null
+++ b/contrib/bzip2/FREEBSD-upgrade
@@ -0,0 +1,27 @@
+$FreeBSD$
+
+Julian Seward's bzip2
+ originals can be found at: http://www.bzip.org/downloads.html
+
+Imported by:
+
+ cvs import -m "Virgin import (trimmed) of Bzip2 version 1.0.5." \
+ src/contrib/bzip2 BZIP2 v1_0_5
+
+Notes:
+ The following log shows details of trimming:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ tar xvfz bzip2-1.0.4.tar.gz -X FREEBSD-Xlist
+ cd bzip2-1.0.4
+ uuencode sample1.bz2 sample1.bz2 > sample1.bz2.uu
+ uuencode sample2.bz2 sample2.bz2 > sample2.bz2.uu
+ uuencode sample3.bz2 sample3.bz2 > sample3.bz2.uu
+ gzip -9 sample1.ref sample2.ref sample3.ref
+ uuencode sample1.ref.gz sample1.ref.gz > sample1.ref.gz.uu
+ uuencode sample2.ref.gz sample2.ref.gz > sample2.ref.gz.uu
+ uuencode sample3.ref.gz sample3.ref.gz > sample3.ref.gz.uu
+ rm sample1.bz2 sample1.ref.gz sample2.bz2 sample2.ref.gz
+ rm sample3.bz2 sample3.ref.gz
+
+obrien@FreeBSD.org
+15 May 2005
diff --git a/contrib/bzip2/FREEBSD-vendor b/contrib/bzip2/FREEBSD-vendor
new file mode 100644
index 000000000000..6847c8b9a495
--- /dev/null
+++ b/contrib/bzip2/FREEBSD-vendor
@@ -0,0 +1,5 @@
+# $FreeBSD$
+Project: bzip2
+ProjectURL: http://www.bzip.org/
+Version: 1.0.5
+License: BSD
diff --git a/contrib/bzip2/LICENSE b/contrib/bzip2/LICENSE
new file mode 100644
index 000000000000..cc614178cf79
--- /dev/null
+++ b/contrib/bzip2/LICENSE
@@ -0,0 +1,42 @@
+
+--------------------------------------------------------------------------
+
+This program, "bzip2", the associated library "libbzip2", and all
+documentation, are copyright (C) 1996-2010 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, jseward@bzip.org
+bzip2/libbzip2 version 1.0.6 of 6 September 2010
+
+--------------------------------------------------------------------------
diff --git a/contrib/bzip2/Makefile b/contrib/bzip2/Makefile
new file mode 100644
index 000000000000..9754ddf286b1
--- /dev/null
+++ b/contrib/bzip2/Makefile
@@ -0,0 +1,217 @@
+# ------------------------------------------------------------------
+# This file is part of bzip2/libbzip2, a program and library for
+# lossless, block-sorting data compression.
+#
+# bzip2/libbzip2 version 1.0.6 of 6 September 2010
+# Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+#
+# Please read the WARNING, DISCLAIMER and PATENTS sections in the
+# README file.
+#
+# This program is released under the terms of the license contained
+# in the file LICENSE.
+# ------------------------------------------------------------------
+
+SHELL=/bin/sh
+
+# To assist in cross-compiling
+CC=gcc
+AR=ar
+RANLIB=ranlib
+LDFLAGS=
+
+BIGFILES=-D_FILE_OFFSET_BITS=64
+CFLAGS=-Wall -Winline -O2 -g $(BIGFILES)
+
+# Where you want it installed when you do 'make install'
+PREFIX=/usr/local
+
+
+OBJS= blocksort.o \
+ huffman.o \
+ crctable.o \
+ randtable.o \
+ compress.o \
+ decompress.o \
+ bzlib.o
+
+all: libbz2.a bzip2 bzip2recover test
+
+bzip2: libbz2.a bzip2.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o bzip2 bzip2.o -L. -lbz2
+
+bzip2recover: bzip2recover.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o bzip2recover bzip2recover.o
+
+libbz2.a: $(OBJS)
+ rm -f libbz2.a
+ $(AR) cq libbz2.a $(OBJS)
+ @if ( test -f $(RANLIB) -o -f /usr/bin/ranlib -o \
+ -f /bin/ranlib -o -f /usr/ccs/bin/ranlib ) ; then \
+ echo $(RANLIB) libbz2.a ; \
+ $(RANLIB) libbz2.a ; \
+ fi
+
+check: test
+test: bzip2
+ @cat words1
+ ./bzip2 -1 < sample1.ref > sample1.rb2
+ ./bzip2 -2 < sample2.ref > sample2.rb2
+ ./bzip2 -3 < sample3.ref > sample3.rb2
+ ./bzip2 -d < sample1.bz2 > sample1.tst
+ ./bzip2 -d < sample2.bz2 > sample2.tst
+ ./bzip2 -ds < sample3.bz2 > sample3.tst
+ cmp sample1.bz2 sample1.rb2
+ cmp sample2.bz2 sample2.rb2
+ cmp sample3.bz2 sample3.rb2
+ cmp sample1.tst sample1.ref
+ cmp sample2.tst sample2.ref
+ cmp sample3.tst sample3.ref
+ @cat words3
+
+install: bzip2 bzip2recover
+ if ( test ! -d $(PREFIX)/bin ) ; then mkdir -p $(PREFIX)/bin ; fi
+ if ( test ! -d $(PREFIX)/lib ) ; then mkdir -p $(PREFIX)/lib ; fi
+ if ( test ! -d $(PREFIX)/man ) ; then mkdir -p $(PREFIX)/man ; fi
+ if ( test ! -d $(PREFIX)/man/man1 ) ; then mkdir -p $(PREFIX)/man/man1 ; fi
+ if ( test ! -d $(PREFIX)/include ) ; then mkdir -p $(PREFIX)/include ; fi
+ cp -f bzip2 $(PREFIX)/bin/bzip2
+ cp -f bzip2 $(PREFIX)/bin/bunzip2
+ cp -f bzip2 $(PREFIX)/bin/bzcat
+ cp -f bzip2recover $(PREFIX)/bin/bzip2recover
+ chmod a+x $(PREFIX)/bin/bzip2
+ chmod a+x $(PREFIX)/bin/bunzip2
+ chmod a+x $(PREFIX)/bin/bzcat
+ chmod a+x $(PREFIX)/bin/bzip2recover
+ cp -f bzip2.1 $(PREFIX)/man/man1
+ chmod a+r $(PREFIX)/man/man1/bzip2.1
+ cp -f bzlib.h $(PREFIX)/include
+ chmod a+r $(PREFIX)/include/bzlib.h
+ cp -f libbz2.a $(PREFIX)/lib
+ chmod a+r $(PREFIX)/lib/libbz2.a
+ cp -f bzgrep $(PREFIX)/bin/bzgrep
+ ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzegrep
+ ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzfgrep
+ chmod a+x $(PREFIX)/bin/bzgrep
+ cp -f bzmore $(PREFIX)/bin/bzmore
+ ln -s -f $(PREFIX)/bin/bzmore $(PREFIX)/bin/bzless
+ chmod a+x $(PREFIX)/bin/bzmore
+ cp -f bzdiff $(PREFIX)/bin/bzdiff
+ ln -s -f $(PREFIX)/bin/bzdiff $(PREFIX)/bin/bzcmp
+ chmod a+x $(PREFIX)/bin/bzdiff
+ cp -f bzgrep.1 bzmore.1 bzdiff.1 $(PREFIX)/man/man1
+ chmod a+r $(PREFIX)/man/man1/bzgrep.1
+ chmod a+r $(PREFIX)/man/man1/bzmore.1
+ chmod a+r $(PREFIX)/man/man1/bzdiff.1
+ echo ".so man1/bzgrep.1" > $(PREFIX)/man/man1/bzegrep.1
+ echo ".so man1/bzgrep.1" > $(PREFIX)/man/man1/bzfgrep.1
+ echo ".so man1/bzmore.1" > $(PREFIX)/man/man1/bzless.1
+ echo ".so man1/bzdiff.1" > $(PREFIX)/man/man1/bzcmp.1
+
+clean:
+ rm -f *.o libbz2.a bzip2 bzip2recover \
+ sample1.rb2 sample2.rb2 sample3.rb2 \
+ sample1.tst sample2.tst sample3.tst
+
+blocksort.o: blocksort.c
+ @cat words0
+ $(CC) $(CFLAGS) -c blocksort.c
+huffman.o: huffman.c
+ $(CC) $(CFLAGS) -c huffman.c
+crctable.o: crctable.c
+ $(CC) $(CFLAGS) -c crctable.c
+randtable.o: randtable.c
+ $(CC) $(CFLAGS) -c randtable.c
+compress.o: compress.c
+ $(CC) $(CFLAGS) -c compress.c
+decompress.o: decompress.c
+ $(CC) $(CFLAGS) -c decompress.c
+bzlib.o: bzlib.c
+ $(CC) $(CFLAGS) -c bzlib.c
+bzip2.o: bzip2.c
+ $(CC) $(CFLAGS) -c bzip2.c
+bzip2recover.o: bzip2recover.c
+ $(CC) $(CFLAGS) -c bzip2recover.c
+
+
+distclean: clean
+ rm -f manual.ps manual.html manual.pdf
+
+DISTNAME=bzip2-1.0.6
+dist: check manual
+ rm -f $(DISTNAME)
+ ln -s -f . $(DISTNAME)
+ tar cvf $(DISTNAME).tar \
+ $(DISTNAME)/blocksort.c \
+ $(DISTNAME)/huffman.c \
+ $(DISTNAME)/crctable.c \
+ $(DISTNAME)/randtable.c \
+ $(DISTNAME)/compress.c \
+ $(DISTNAME)/decompress.c \
+ $(DISTNAME)/bzlib.c \
+ $(DISTNAME)/bzip2.c \
+ $(DISTNAME)/bzip2recover.c \
+ $(DISTNAME)/bzlib.h \
+ $(DISTNAME)/bzlib_private.h \
+ $(DISTNAME)/Makefile \
+ $(DISTNAME)/LICENSE \
+ $(DISTNAME)/bzip2.1 \
+ $(DISTNAME)/bzip2.1.preformatted \
+ $(DISTNAME)/bzip2.txt \
+ $(DISTNAME)/words0 \
+ $(DISTNAME)/words1 \
+ $(DISTNAME)/words2 \
+ $(DISTNAME)/words3 \
+ $(DISTNAME)/sample1.ref \
+ $(DISTNAME)/sample2.ref \
+ $(DISTNAME)/sample3.ref \
+ $(DISTNAME)/sample1.bz2 \
+ $(DISTNAME)/sample2.bz2 \
+ $(DISTNAME)/sample3.bz2 \
+ $(DISTNAME)/dlltest.c \
+ $(DISTNAME)/manual.html \
+ $(DISTNAME)/manual.pdf \
+ $(DISTNAME)/manual.ps \
+ $(DISTNAME)/README \
+ $(DISTNAME)/README.COMPILATION.PROBLEMS \
+ $(DISTNAME)/README.XML.STUFF \
+ $(DISTNAME)/CHANGES \
+ $(DISTNAME)/libbz2.def \
+ $(DISTNAME)/libbz2.dsp \
+ $(DISTNAME)/dlltest.dsp \
+ $(DISTNAME)/makefile.msc \
+ $(DISTNAME)/unzcrash.c \
+ $(DISTNAME)/spewG.c \
+ $(DISTNAME)/mk251.c \
+ $(DISTNAME)/bzdiff \
+ $(DISTNAME)/bzdiff.1 \
+ $(DISTNAME)/bzmore \
+ $(DISTNAME)/bzmore.1 \
+ $(DISTNAME)/bzgrep \
+ $(DISTNAME)/bzgrep.1 \
+ $(DISTNAME)/Makefile-libbz2_so \
+ $(DISTNAME)/bz-common.xsl \
+ $(DISTNAME)/bz-fo.xsl \
+ $(DISTNAME)/bz-html.xsl \
+ $(DISTNAME)/bzip.css \
+ $(DISTNAME)/entities.xml \
+ $(DISTNAME)/manual.xml \
+ $(DISTNAME)/format.pl \
+ $(DISTNAME)/xmlproc.sh
+ gzip -v $(DISTNAME).tar
+
+# For rebuilding the manual from sources on my SuSE 9.1 box
+
+MANUAL_SRCS= bz-common.xsl bz-fo.xsl bz-html.xsl bzip.css \
+ entities.xml manual.xml
+
+manual: manual.html manual.ps manual.pdf
+
+manual.ps: $(MANUAL_SRCS)
+ ./xmlproc.sh -ps manual.xml
+
+manual.pdf: $(MANUAL_SRCS)
+ ./xmlproc.sh -pdf manual.xml
+
+manual.html: $(MANUAL_SRCS)
+ ./xmlproc.sh -html manual.xml
diff --git a/contrib/bzip2/Makefile-libbz2_so b/contrib/bzip2/Makefile-libbz2_so
new file mode 100644
index 000000000000..e58791b3b337
--- /dev/null
+++ b/contrib/bzip2/Makefile-libbz2_so
@@ -0,0 +1,59 @@
+
+# This Makefile builds a shared version of the library,
+# libbz2.so.1.0.6, with soname libbz2.so.1.0,
+# at least on x86-Linux (RedHat 7.2),
+# with gcc-2.96 20000731 (Red Hat Linux 7.1 2.96-98).
+# Please see the README file for some important info
+# about building the library like this.
+
+# ------------------------------------------------------------------
+# This file is part of bzip2/libbzip2, a program and library for
+# lossless, block-sorting data compression.
+#
+# bzip2/libbzip2 version 1.0.6 of 6 September 2010
+# Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+#
+# Please read the WARNING, DISCLAIMER and PATENTS sections in the
+# README file.
+#
+# This program is released under the terms of the license contained
+# in the file LICENSE.
+# ------------------------------------------------------------------
+
+
+SHELL=/bin/sh
+CC=gcc
+BIGFILES=-D_FILE_OFFSET_BITS=64
+CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES)
+
+OBJS= blocksort.o \
+ huffman.o \
+ crctable.o \
+ randtable.o \
+ compress.o \
+ decompress.o \
+ bzlib.o
+
+all: $(OBJS)
+ $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.6 $(OBJS)
+ $(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.6
+ rm -f libbz2.so.1.0
+ ln -s libbz2.so.1.0.6 libbz2.so.1.0
+
+clean:
+ rm -f $(OBJS) bzip2.o libbz2.so.1.0.6 libbz2.so.1.0 bzip2-shared
+
+blocksort.o: blocksort.c
+ $(CC) $(CFLAGS) -c blocksort.c
+huffman.o: huffman.c
+ $(CC) $(CFLAGS) -c huffman.c
+crctable.o: crctable.c
+ $(CC) $(CFLAGS) -c crctable.c
+randtable.o: randtable.c
+ $(CC) $(CFLAGS) -c randtable.c
+compress.o: compress.c
+ $(CC) $(CFLAGS) -c compress.c
+decompress.o: decompress.c
+ $(CC) $(CFLAGS) -c decompress.c
+bzlib.o: bzlib.c
+ $(CC) $(CFLAGS) -c bzlib.c
diff --git a/contrib/bzip2/README b/contrib/bzip2/README
new file mode 100644
index 000000000000..9fb0f636013a
--- /dev/null
+++ b/contrib/bzip2/README
@@ -0,0 +1,215 @@
+
+This is the README for bzip2/libzip2.
+This version is fully compatible with the previous public releases.
+
+------------------------------------------------------------------
+This file is part of bzip2/libbzip2, a program and library for
+lossless, block-sorting data compression.
+
+bzip2/libbzip2 version 1.0.6 of 6 September 2010
+Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+Please read the WARNING, DISCLAIMER and PATENTS sections in this file.
+
+This program is released under the terms of the license contained
+in the file LICENSE.
+------------------------------------------------------------------
+
+Complete documentation is available in Postscript form (manual.ps),
+PDF (manual.pdf) or html (manual.html). A plain-text version of the
+manual page is available as bzip2.txt.
+
+
+HOW TO BUILD -- UNIX
+
+Type 'make'. This builds the library libbz2.a and then the programs
+bzip2 and bzip2recover. Six self-tests are run. If the self-tests
+complete ok, carry on to installation:
+
+To install in /usr/local/bin, /usr/local/lib, /usr/local/man and
+/usr/local/include, type
+
+ make install
+
+To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type
+
+ make install PREFIX=/xxx/yyy
+
+If you are (justifiably) paranoid and want to see what 'make install'
+is going to do, you can first do
+
+ make -n install or
+ make -n install PREFIX=/xxx/yyy respectively.
+
+The -n instructs make to show the commands it would execute, but not
+actually execute them.
+
+
+HOW TO BUILD -- UNIX, shared library libbz2.so.
+
+Do 'make -f Makefile-libbz2_so'. This Makefile seems to work for
+Linux-ELF (RedHat 7.2 on an x86 box), with gcc. I make no claims
+that it works for any other platform, though I suspect it probably
+will work for most platforms employing both ELF and gcc.
+
+bzip2-shared, a client of the shared library, is also built, but not
+self-tested. So I suggest you also build using the normal Makefile,
+since that conducts a self-test. A second reason to prefer the
+version statically linked to the library is that, on x86 platforms,
+building shared objects makes a valuable register (%ebx) unavailable
+to gcc, resulting in a slowdown of 10%-20%, at least for bzip2.
+
+Important note for people upgrading .so's from 0.9.0/0.9.5 to version
+1.0.X. All the functions in the library have been renamed, from (eg)
+bzCompress to BZ2_bzCompress, to avoid namespace pollution.
+Unfortunately this means that the libbz2.so created by
+Makefile-libbz2_so will not work with any program which used an older
+version of the library. I do encourage library clients to make the
+effort to upgrade to use version 1.0, since it is both faster and more
+robust than previous versions.
+
+
+HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc.
+
+It's difficult for me to support compilation on all these platforms.
+My approach is to collect binaries for these platforms, and put them
+on the master web site (http://www.bzip.org). Look there. However
+(FWIW), bzip2-1.0.X is very standard ANSI C and should compile
+unmodified with MS Visual C. If you have difficulties building, you
+might want to read README.COMPILATION.PROBLEMS.
+
+At least using MS Visual C++ 6, you can build from the unmodified
+sources by issuing, in a command shell:
+
+ nmake -f makefile.msc
+
+(you may need to first run the MSVC-provided script VCVARS32.BAT
+ so as to set up paths to the MSVC tools correctly).
+
+
+VALIDATION
+
+Correct operation, in the sense that a compressed file can always be
+decompressed to reproduce the original, is obviously of paramount
+importance. To validate bzip2, I used a modified version of Mark
+Nelson's churn program. Churn is an automated test driver which
+recursively traverses a directory structure, using bzip2 to compress
+and then decompress each file it encounters, and checking that the
+decompressed data is the same as the original.
+
+
+
+Please read and be aware of the following:
+
+WARNING:
+
+ This program and library (attempts to) compress data by
+ performing several non-trivial transformations on it.
+ Unless you are 100% familiar with *all* the algorithms
+ contained herein, and with the consequences of modifying them,
+ you should NOT meddle with the compression or decompression
+ machinery. Incorrect changes can and very likely *will*
+ lead to disastrous loss of data.
+
+
+DISCLAIMER:
+
+ I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE
+ USE OF THIS PROGRAM/LIBRARY, HOWSOEVER CAUSED.
+
+ Every compression of a file implies an assumption that the
+ compressed file can be decompressed to reproduce the original.
+ Great efforts in design, coding and testing have been made to
+ ensure that this program works correctly. However, the complexity
+ of the algorithms, and, in particular, the presence of various
+ special cases in the code which occur with very low but non-zero
+ probability make it impossible to rule out the possibility of bugs
+ remaining in the program. DO NOT COMPRESS ANY DATA WITH THIS
+ PROGRAM UNLESS YOU ARE PREPARED TO ACCEPT THE POSSIBILITY, HOWEVER
+ SMALL, THAT THE DATA WILL NOT BE RECOVERABLE.
+
+ That is not to say this program is inherently unreliable.
+ Indeed, I very much hope the opposite is true. bzip2/libbzip2
+ has been carefully constructed and extensively tested.
+
+
+PATENTS:
+
+ To the best of my knowledge, bzip2/libbzip2 does not use any
+ patented algorithms. However, I do not have the resources
+ to carry out a patent search. Therefore I cannot give any
+ guarantee of the above statement.
+
+
+
+WHAT'S NEW IN 0.9.0 (as compared to 0.1pl2) ?
+
+ * Approx 10% faster compression, 30% faster decompression
+ * -t (test mode) is a lot quicker
+ * Can decompress concatenated compressed files
+ * Programming interface, so programs can directly read/write .bz2 files
+ * Less restrictive (BSD-style) licensing
+ * Flag handling more compatible with GNU gzip
+ * Much more documentation, i.e., a proper user manual
+ * Hopefully, improved portability (at least of the library)
+
+WHAT'S NEW IN 0.9.5 ?
+
+ * Compression speed is much less sensitive to the input
+ data than in previous versions. Specifically, the very
+ slow performance caused by repetitive data is fixed.
+ * Many small improvements in file and flag handling.
+ * A Y2K statement.
+
+WHAT'S NEW IN 1.0.0 ?
+
+ See the CHANGES file.
+
+WHAT'S NEW IN 1.0.2 ?
+
+ See the CHANGES file.
+
+WHAT'S NEW IN 1.0.3 ?
+
+ See the CHANGES file.
+
+WHAT'S NEW IN 1.0.4 ?
+
+ See the CHANGES file.
+
+WHAT'S NEW IN 1.0.5 ?
+
+ See the CHANGES file.
+
+WHAT'S NEW IN 1.0.6 ?
+
+ See the CHANGES file.
+
+
+I hope you find bzip2 useful. Feel free to contact me at
+ jseward@bzip.org
+if you have any suggestions or queries. Many people mailed me with
+comments, suggestions and patches after the releases of bzip-0.15,
+bzip-0.21, and bzip2 versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1,
+1.0.2 and 1.0.3, and the changes in bzip2 are largely a result of this
+feedback. I thank you for your comments.
+
+bzip2's "home" is http://www.bzip.org/
+
+Julian Seward
+jseward@bzip.org
+Cambridge, UK.
+
+18 July 1996 (version 0.15)
+25 August 1996 (version 0.21)
+ 7 August 1997 (bzip2, version 0.1)
+29 August 1997 (bzip2, version 0.1pl2)
+23 August 1998 (bzip2, version 0.9.0)
+ 8 June 1999 (bzip2, version 0.9.5)
+ 4 Sept 1999 (bzip2, version 0.9.5d)
+ 5 May 2000 (bzip2, version 1.0pre8)
+30 December 2001 (bzip2, version 1.0.2pre1)
+15 February 2005 (bzip2, version 1.0.3)
+20 December 2006 (bzip2, version 1.0.4)
+10 December 2007 (bzip2, version 1.0.5)
+ 6 Sept 2010 (bzip2, version 1.0.6)
diff --git a/contrib/bzip2/README.COMPILATION.PROBLEMS b/contrib/bzip2/README.COMPILATION.PROBLEMS
new file mode 100644
index 000000000000..667d0d6dfe4d
--- /dev/null
+++ b/contrib/bzip2/README.COMPILATION.PROBLEMS
@@ -0,0 +1,58 @@
+------------------------------------------------------------------
+This file is part of bzip2/libbzip2, a program and library for
+lossless, block-sorting data compression.
+
+bzip2/libbzip2 version 1.0.6 of 6 September 2010
+Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+Please read the WARNING, DISCLAIMER and PATENTS sections in the
+README file.
+
+This program is released under the terms of the license contained
+in the file LICENSE.
+------------------------------------------------------------------
+
+bzip2-1.0.6 should compile without problems on the vast majority of
+platforms. Using the supplied Makefile, I've built and tested it
+myself for x86-linux and amd64-linux. With makefile.msc, Visual C++
+6.0 and nmake, you can build a native Win32 version too. Large file
+support seems to work correctly on at least on amd64-linux.
+
+When I say "large file" I mean a file of size 2,147,483,648 (2^31)
+bytes or above. Many older OSs can't handle files above this size,
+but many newer ones can. Large files are pretty huge -- most files
+you'll encounter are not Large Files.
+
+Early versions of bzip2 (0.1, 0.9.0, 0.9.5) compiled on a wide variety
+of platforms without difficulty, and I hope this version will continue
+in that tradition. However, in order to support large files, I've had
+to include the define -D_FILE_OFFSET_BITS=64 in the Makefile. This
+can cause problems.
+
+The technique of adding -D_FILE_OFFSET_BITS=64 to get large file
+support is, as far as I know, the Recommended Way to get correct large
+file support. For more details, see the Large File Support
+Specification, published by the Large File Summit, at
+
+ http://ftp.sas.com/standards/large.file
+
+As a general comment, if you get compilation errors which you think
+are related to large file support, try removing the above define from
+the Makefile, ie, delete the line
+
+ BIGFILES=-D_FILE_OFFSET_BITS=64
+
+from the Makefile, and do 'make clean ; make'. This will give you a
+version of bzip2 without large file support, which, for most
+applications, is probably not a problem.
+
+Alternatively, try some of the platform-specific hints listed below.
+
+You can use the spewG.c program to generate huge files to test bzip2's
+large file support, if you are feeling paranoid. Be aware though that
+any compilation problems which affect bzip2 will also affect spewG.c,
+alas.
+
+AIX: I have reports that for large file support, you need to specify
+-D_LARGE_FILES rather than -D_FILE_OFFSET_BITS=64. I have not tested
+this myself.
diff --git a/contrib/bzip2/blocksort.c b/contrib/bzip2/blocksort.c
new file mode 100644
index 000000000000..d0d662cd4e9f
--- /dev/null
+++ b/contrib/bzip2/blocksort.c
@@ -0,0 +1,1094 @@
+
+/*-------------------------------------------------------------*/
+/*--- Block sorting machinery ---*/
+/*--- blocksort.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+ This file is part of bzip2/libbzip2, a program and library for
+ lossless, block-sorting data compression.
+
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+ Please read the WARNING, DISCLAIMER and PATENTS sections in the
+ README file.
+
+ This program is released under the terms of the license contained
+ in the file LICENSE.
+ ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+/*---------------------------------------------*/
+/*--- Fallback O(N log(N)^2) sorting ---*/
+/*--- algorithm, for repetitive blocks ---*/
+/*---------------------------------------------*/
+
+/*---------------------------------------------*/
+static
+__inline__
+void fallbackSimpleSort ( UInt32* fmap,
+ UInt32* eclass,
+ Int32 lo,
+ Int32 hi )
+{
+ Int32 i, j, tmp;
+ UInt32 ec_tmp;
+
+ if (lo == hi) return;
+
+ if (hi - lo > 3) {
+ for ( i = hi-4; i >= lo; i-- ) {
+ tmp = fmap[i];
+ ec_tmp = eclass[tmp];
+ for ( j = i+4; j <= hi && ec_tmp > eclass[fmap[j]]; j += 4 )
+ fmap[j-4] = fmap[j];
+ fmap[j-4] = tmp;
+ }
+ }
+
+ for ( i = hi-1; i >= lo; i-- ) {
+ tmp = fmap[i];
+ ec_tmp = eclass[tmp];
+ for ( j = i+1; j <= hi && ec_tmp > eclass[fmap[j]]; j++ )
+ fmap[j-1] = fmap[j];
+ fmap[j-1] = tmp;
+ }
+}
+
+
+/*---------------------------------------------*/
+#define fswap(zz1, zz2) \
+ { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; }
+
+#define fvswap(zzp1, zzp2, zzn) \
+{ \
+ Int32 yyp1 = (zzp1); \
+ Int32 yyp2 = (zzp2); \
+ Int32 yyn = (zzn); \
+ while (yyn > 0) { \
+ fswap(fmap[yyp1], fmap[yyp2]); \
+ yyp1++; yyp2++; yyn--; \
+ } \
+}
+
+
+#define fmin(a,b) ((a) < (b)) ? (a) : (b)
+
+#define fpush(lz,hz) { stackLo[sp] = lz; \
+ stackHi[sp] = hz; \
+ sp++; }
+
+#define fpop(lz,hz) { sp--; \
+ lz = stackLo[sp]; \
+ hz = stackHi[sp]; }
+
+#define FALLBACK_QSORT_SMALL_THRESH 10
+#define FALLBACK_QSORT_STACK_SIZE 100
+
+
+static
+void fallbackQSort3 ( UInt32* fmap,
+ UInt32* eclass,
+ Int32 loSt,
+ Int32 hiSt )
+{
+ Int32 unLo, unHi, ltLo, gtHi, n, m;
+ Int32 sp, lo, hi;
+ UInt32 med, r, r3;
+ Int32 stackLo[FALLBACK_QSORT_STACK_SIZE];
+ Int32 stackHi[FALLBACK_QSORT_STACK_SIZE];
+
+ r = 0;
+
+ sp = 0;
+ fpush ( loSt, hiSt );
+
+ while (sp > 0) {
+
+ AssertH ( sp < FALLBACK_QSORT_STACK_SIZE - 1, 1004 );
+
+ fpop ( lo, hi );
+ if (hi - lo < FALLBACK_QSORT_SMALL_THRESH) {
+ fallbackSimpleSort ( fmap, eclass, lo, hi );
+ continue;
+ }
+
+ /* Random partitioning. Median of 3 sometimes fails to
+ avoid bad cases. Median of 9 seems to help but
+ looks rather expensive. This too seems to work but
+ is cheaper. Guidance for the magic constants
+ 7621 and 32768 is taken from Sedgewick's algorithms
+ book, chapter 35.
+ */
+ r = ((r * 7621) + 1) % 32768;
+ r3 = r % 3;
+ if (r3 == 0) med = eclass[fmap[lo]]; else
+ if (r3 == 1) med = eclass[fmap[(lo+hi)>>1]]; else
+ med = eclass[fmap[hi]];
+
+ unLo = ltLo = lo;
+ unHi = gtHi = hi;
+
+ while (1) {
+ while (1) {
+ if (unLo > unHi) break;
+ n = (Int32)eclass[fmap[unLo]] - (Int32)med;
+ if (n == 0) {
+ fswap(fmap[unLo], fmap[ltLo]);
+ ltLo++; unLo++;
+ continue;
+ };
+ if (n > 0) break;
+ unLo++;
+ }
+ while (1) {
+ if (unLo > unHi) break;
+ n = (Int32)eclass[fmap[unHi]] - (Int32)med;
+ if (n == 0) {
+ fswap(fmap[unHi], fmap[gtHi]);
+ gtHi--; unHi--;
+ continue;
+ };
+ if (n < 0) break;
+ unHi--;
+ }
+ if (unLo > unHi) break;
+ fswap(fmap[unLo], fmap[unHi]); unLo++; unHi--;
+ }
+
+ AssertD ( unHi == unLo-1, "fallbackQSort3(2)" );
+
+ if (gtHi < ltLo) continue;
+
+ n = fmin(ltLo-lo, unLo-ltLo); fvswap(lo, unLo-n, n);
+ m = fmin(hi-gtHi, gtHi-unHi); fvswap(unLo, hi-m+1, m);
+
+ n = lo + unLo - ltLo - 1;
+ m = hi - (gtHi - unHi) + 1;
+
+ if (n - lo > hi - m) {
+ fpush ( lo, n );
+ fpush ( m, hi );
+ } else {
+ fpush ( m, hi );
+ fpush ( lo, n );
+ }
+ }
+}
+
+#undef fmin
+#undef fpush
+#undef fpop
+#undef fswap
+#undef fvswap
+#undef FALLBACK_QSORT_SMALL_THRESH
+#undef FALLBACK_QSORT_STACK_SIZE
+
+
+/*---------------------------------------------*/
+/* Pre:
+ nblock > 0
+ eclass exists for [0 .. nblock-1]
+ ((UChar*)eclass) [0 .. nblock-1] holds block
+ ptr exists for [0 .. nblock-1]
+
+ Post:
+ ((UChar*)eclass) [0 .. nblock-1] holds block
+ All other areas of eclass destroyed
+ fmap [0 .. nblock-1] holds sorted order
+ bhtab [ 0 .. 2+(nblock/32) ] destroyed
+*/
+
+#define SET_BH(zz) bhtab[(zz) >> 5] |= (1 << ((zz) & 31))
+#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31))
+#define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1 << ((zz) & 31)))
+#define WORD_BH(zz) bhtab[(zz) >> 5]
+#define UNALIGNED_BH(zz) ((zz) & 0x01f)
+
+static
+void fallbackSort ( UInt32* fmap,
+ UInt32* eclass,
+ UInt32* bhtab,
+ Int32 nblock,
+ Int32 verb )
+{
+ Int32 ftab[257];
+ Int32 ftabCopy[256];
+ Int32 H, i, j, k, l, r, cc, cc1;
+ Int32 nNotDone;
+ Int32 nBhtab;
+ UChar* eclass8 = (UChar*)eclass;
+
+ /*--
+ Initial 1-char radix sort to generate
+ initial fmap and initial BH bits.
+ --*/
+ if (verb >= 4)
+ VPrintf0 ( " bucket sorting ...\n" );
+ for (i = 0; i < 257; i++) ftab[i] = 0;
+ for (i = 0; i < nblock; i++) ftab[eclass8[i]]++;
+ for (i = 0; i < 256; i++) ftabCopy[i] = ftab[i];
+ for (i = 1; i < 257; i++) ftab[i] += ftab[i-1];
+
+ for (i = 0; i < nblock; i++) {
+ j = eclass8[i];
+ k = ftab[j] - 1;
+ ftab[j] = k;
+ fmap[k] = i;
+ }
+
+ nBhtab = 2 + (nblock / 32);
+ for (i = 0; i < nBhtab; i++) bhtab[i] = 0;
+ for (i = 0; i < 256; i++) SET_BH(ftab[i]);
+
+ /*--
+ Inductively refine the buckets. Kind-of an
+ "exponential radix sort" (!), inspired by the
+ Manber-Myers suffix array construction algorithm.
+ --*/
+
+ /*-- set sentinel bits for block-end detection --*/
+ for (i = 0; i < 32; i++) {
+ SET_BH(nblock + 2*i);
+ CLEAR_BH(nblock + 2*i + 1);
+ }
+
+ /*-- the log(N) loop --*/
+ H = 1;
+ while (1) {
+
+ if (verb >= 4)
+ VPrintf1 ( " depth %6d has ", H );
+
+ j = 0;
+ for (i = 0; i < nblock; i++) {
+ if (ISSET_BH(i)) j = i;
+ k = fmap[i] - H; if (k < 0) k += nblock;
+ eclass[k] = j;
+ }
+
+ nNotDone = 0;
+ r = -1;
+ while (1) {
+
+ /*-- find the next non-singleton bucket --*/
+ k = r + 1;
+ while (ISSET_BH(k) && UNALIGNED_BH(k)) k++;
+ if (ISSET_BH(k)) {
+ while (WORD_BH(k) == 0xffffffff) k += 32;
+ while (ISSET_BH(k)) k++;
+ }
+ l = k - 1;
+ if (l >= nblock) break;
+ while (!ISSET_BH(k) && UNALIGNED_BH(k)) k++;
+ if (!ISSET_BH(k)) {
+ while (WORD_BH(k) == 0x00000000) k += 32;
+ while (!ISSET_BH(k)) k++;
+ }
+ r = k - 1;
+ if (r >= nblock) break;
+
+ /*-- now [l, r] bracket current bucket --*/
+ if (r > l) {
+ nNotDone += (r - l + 1);
+ fallbackQSort3 ( fmap, eclass, l, r );
+
+ /*-- scan bucket and generate header bits-- */
+ cc = -1;
+ for (i = l; i <= r; i++) {
+ cc1 = eclass[fmap[i]];
+ if (cc != cc1) { SET_BH(i); cc = cc1; };
+ }
+ }
+ }
+
+ if (verb >= 4)
+ VPrintf1 ( "%6d unresolved strings\n", nNotDone );
+
+ H *= 2;
+ if (H > nblock || nNotDone == 0) break;
+ }
+
+ /*--
+ Reconstruct the original block in
+ eclass8 [0 .. nblock-1], since the
+ previous phase destroyed it.
+ --*/
+ if (verb >= 4)
+ VPrintf0 ( " reconstructing block ...\n" );
+ j = 0;
+ for (i = 0; i < nblock; i++) {
+ while (ftabCopy[j] == 0) j++;
+ ftabCopy[j]--;
+ eclass8[fmap[i]] = (UChar)j;
+ }
+ AssertH ( j < 256, 1005 );
+}
+
+#undef SET_BH
+#undef CLEAR_BH
+#undef ISSET_BH
+#undef WORD_BH
+#undef UNALIGNED_BH
+
+
+/*---------------------------------------------*/
+/*--- The main, O(N^2 log(N)) sorting ---*/
+/*--- algorithm. Faster for "normal" ---*/
+/*--- non-repetitive blocks. ---*/
+/*---------------------------------------------*/
+
+/*---------------------------------------------*/
+static
+__inline__
+Bool mainGtU ( UInt32 i1,
+ UInt32 i2,
+ UChar* block,
+ UInt16* quadrant,
+ UInt32 nblock,
+ Int32* budget )
+{
+ Int32 k;
+ UChar c1, c2;
+ UInt16 s1, s2;
+
+ AssertD ( i1 != i2, "mainGtU" );
+ /* 1 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ i1++; i2++;
+ /* 2 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ i1++; i2++;
+ /* 3 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ i1++; i2++;
+ /* 4 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ i1++; i2++;
+ /* 5 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ i1++; i2++;
+ /* 6 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ i1++; i2++;
+ /* 7 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ i1++; i2++;
+ /* 8 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ i1++; i2++;
+ /* 9 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ i1++; i2++;
+ /* 10 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ i1++; i2++;
+ /* 11 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ i1++; i2++;
+ /* 12 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ i1++; i2++;
+
+ k = nblock + 8;
+
+ do {
+ /* 1 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ s1 = quadrant[i1]; s2 = quadrant[i2];
+ if (s1 != s2) return (s1 > s2);
+ i1++; i2++;
+ /* 2 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ s1 = quadrant[i1]; s2 = quadrant[i2];
+ if (s1 != s2) return (s1 > s2);
+ i1++; i2++;
+ /* 3 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ s1 = quadrant[i1]; s2 = quadrant[i2];
+ if (s1 != s2) return (s1 > s2);
+ i1++; i2++;
+ /* 4 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ s1 = quadrant[i1]; s2 = quadrant[i2];
+ if (s1 != s2) return (s1 > s2);
+ i1++; i2++;
+ /* 5 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ s1 = quadrant[i1]; s2 = quadrant[i2];
+ if (s1 != s2) return (s1 > s2);
+ i1++; i2++;
+ /* 6 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ s1 = quadrant[i1]; s2 = quadrant[i2];
+ if (s1 != s2) return (s1 > s2);
+ i1++; i2++;
+ /* 7 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ s1 = quadrant[i1]; s2 = quadrant[i2];
+ if (s1 != s2) return (s1 > s2);
+ i1++; i2++;
+ /* 8 */
+ c1 = block[i1]; c2 = block[i2];
+ if (c1 != c2) return (c1 > c2);
+ s1 = quadrant[i1]; s2 = quadrant[i2];
+ if (s1 != s2) return (s1 > s2);
+ i1++; i2++;
+
+ if (i1 >= nblock) i1 -= nblock;
+ if (i2 >= nblock) i2 -= nblock;
+
+ k -= 8;
+ (*budget)--;
+ }
+ while (k >= 0);
+
+ return False;
+}
+
+
+/*---------------------------------------------*/
+/*--
+ Knuth's increments seem to work better
+ than Incerpi-Sedgewick here. Possibly
+ because the number of elems to sort is
+ usually small, typically <= 20.
+--*/
+static
+Int32 incs[14] = { 1, 4, 13, 40, 121, 364, 1093, 3280,
+ 9841, 29524, 88573, 265720,
+ 797161, 2391484 };
+
+static
+void mainSimpleSort ( UInt32* ptr,
+ UChar* block,
+ UInt16* quadrant,
+ Int32 nblock,
+ Int32 lo,
+ Int32 hi,
+ Int32 d,
+ Int32* budget )
+{
+ Int32 i, j, h, bigN, hp;
+ UInt32 v;
+
+ bigN = hi - lo + 1;
+ if (bigN < 2) return;
+
+ hp = 0;
+ while (incs[hp] < bigN) hp++;
+ hp--;
+
+ for (; hp >= 0; hp--) {
+ h = incs[hp];
+
+ i = lo + h;
+ while (True) {
+
+ /*-- copy 1 --*/
+ if (i > hi) break;
+ v = ptr[i];
+ j = i;
+ while ( mainGtU (
+ ptr[j-h]+d, v+d, block, quadrant, nblock, budget
+ ) ) {
+ ptr[j] = ptr[j-h];
+ j = j - h;
+ if (j <= (lo + h - 1)) break;
+ }
+ ptr[j] = v;
+ i++;
+
+ /*-- copy 2 --*/
+ if (i > hi) break;
+ v = ptr[i];
+ j = i;
+ while ( mainGtU (
+ ptr[j-h]+d, v+d, block, quadrant, nblock, budget
+ ) ) {
+ ptr[j] = ptr[j-h];
+ j = j - h;
+ if (j <= (lo + h - 1)) break;
+ }
+ ptr[j] = v;
+ i++;
+
+ /*-- copy 3 --*/
+ if (i > hi) break;
+ v = ptr[i];
+ j = i;
+ while ( mainGtU (
+ ptr[j-h]+d, v+d, block, quadrant, nblock, budget
+ ) ) {
+ ptr[j] = ptr[j-h];
+ j = j - h;
+ if (j <= (lo + h - 1)) break;
+ }
+ ptr[j] = v;
+ i++;
+
+ if (*budget < 0) return;
+ }
+ }
+}
+
+
+/*---------------------------------------------*/
+/*--
+ The following is an implementation of
+ an elegant 3-way quicksort for strings,
+ described in a paper "Fast Algorithms for
+ Sorting and Searching Strings", by Robert
+ Sedgewick and Jon L. Bentley.
+--*/
+
+#define mswap(zz1, zz2) \
+ { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; }
+
+#define mvswap(zzp1, zzp2, zzn) \
+{ \
+ Int32 yyp1 = (zzp1); \
+ Int32 yyp2 = (zzp2); \
+ Int32 yyn = (zzn); \
+ while (yyn > 0) { \
+ mswap(ptr[yyp1], ptr[yyp2]); \
+ yyp1++; yyp2++; yyn--; \
+ } \
+}
+
+static
+__inline__
+UChar mmed3 ( UChar a, UChar b, UChar c )
+{
+ UChar t;
+ if (a > b) { t = a; a = b; b = t; };
+ if (b > c) {
+ b = c;
+ if (a > b) b = a;
+ }
+ return b;
+}
+
+#define mmin(a,b) ((a) < (b)) ? (a) : (b)
+
+#define mpush(lz,hz,dz) { stackLo[sp] = lz; \
+ stackHi[sp] = hz; \
+ stackD [sp] = dz; \
+ sp++; }
+
+#define mpop(lz,hz,dz) { sp--; \
+ lz = stackLo[sp]; \
+ hz = stackHi[sp]; \
+ dz = stackD [sp]; }
+
+
+#define mnextsize(az) (nextHi[az]-nextLo[az])
+
+#define mnextswap(az,bz) \
+ { Int32 tz; \
+ tz = nextLo[az]; nextLo[az] = nextLo[bz]; nextLo[bz] = tz; \
+ tz = nextHi[az]; nextHi[az] = nextHi[bz]; nextHi[bz] = tz; \
+ tz = nextD [az]; nextD [az] = nextD [bz]; nextD [bz] = tz; }
+
+
+#define MAIN_QSORT_SMALL_THRESH 20
+#define MAIN_QSORT_DEPTH_THRESH (BZ_N_RADIX + BZ_N_QSORT)
+#define MAIN_QSORT_STACK_SIZE 100
+
+static
+void mainQSort3 ( UInt32* ptr,
+ UChar* block,
+ UInt16* quadrant,
+ Int32 nblock,
+ Int32 loSt,
+ Int32 hiSt,
+ Int32 dSt,
+ Int32* budget )
+{
+ Int32 unLo, unHi, ltLo, gtHi, n, m, med;
+ Int32 sp, lo, hi, d;
+
+ Int32 stackLo[MAIN_QSORT_STACK_SIZE];
+ Int32 stackHi[MAIN_QSORT_STACK_SIZE];
+ Int32 stackD [MAIN_QSORT_STACK_SIZE];
+
+ Int32 nextLo[3];
+ Int32 nextHi[3];
+ Int32 nextD [3];
+
+ sp = 0;
+ mpush ( loSt, hiSt, dSt );
+
+ while (sp > 0) {
+
+ AssertH ( sp < MAIN_QSORT_STACK_SIZE - 2, 1001 );
+
+ mpop ( lo, hi, d );
+ if (hi - lo < MAIN_QSORT_SMALL_THRESH ||
+ d > MAIN_QSORT_DEPTH_THRESH) {
+ mainSimpleSort ( ptr, block, quadrant, nblock, lo, hi, d, budget );
+ if (*budget < 0) return;
+ continue;
+ }
+
+ med = (Int32)
+ mmed3 ( block[ptr[ lo ]+d],
+ block[ptr[ hi ]+d],
+ block[ptr[ (lo+hi)>>1 ]+d] );
+
+ unLo = ltLo = lo;
+ unHi = gtHi = hi;
+
+ while (True) {
+ while (True) {
+ if (unLo > unHi) break;
+ n = ((Int32)block[ptr[unLo]+d]) - med;
+ if (n == 0) {
+ mswap(ptr[unLo], ptr[ltLo]);
+ ltLo++; unLo++; continue;
+ };
+ if (n > 0) break;
+ unLo++;
+ }
+ while (True) {
+ if (unLo > unHi) break;
+ n = ((Int32)block[ptr[unHi]+d]) - med;
+ if (n == 0) {
+ mswap(ptr[unHi], ptr[gtHi]);
+ gtHi--; unHi--; continue;
+ };
+ if (n < 0) break;
+ unHi--;
+ }
+ if (unLo > unHi) break;
+ mswap(ptr[unLo], ptr[unHi]); unLo++; unHi--;
+ }
+
+ AssertD ( unHi == unLo-1, "mainQSort3(2)" );
+
+ if (gtHi < ltLo) {
+ mpush(lo, hi, d+1 );
+ continue;
+ }
+
+ n = mmin(ltLo-lo, unLo-ltLo); mvswap(lo, unLo-n, n);
+ m = mmin(hi-gtHi, gtHi-unHi); mvswap(unLo, hi-m+1, m);
+
+ n = lo + unLo - ltLo - 1;
+ m = hi - (gtHi - unHi) + 1;
+
+ nextLo[0] = lo; nextHi[0] = n; nextD[0] = d;
+ nextLo[1] = m; nextHi[1] = hi; nextD[1] = d;
+ nextLo[2] = n+1; nextHi[2] = m-1; nextD[2] = d+1;
+
+ if (mnextsize(0) < mnextsize(1)) mnextswap(0,1);
+ if (mnextsize(1) < mnextsize(2)) mnextswap(1,2);
+ if (mnextsize(0) < mnextsize(1)) mnextswap(0,1);
+
+ AssertD (mnextsize(0) >= mnextsize(1), "mainQSort3(8)" );
+ AssertD (mnextsize(1) >= mnextsize(2), "mainQSort3(9)" );
+
+ mpush (nextLo[0], nextHi[0], nextD[0]);
+ mpush (nextLo[1], nextHi[1], nextD[1]);
+ mpush (nextLo[2], nextHi[2], nextD[2]);
+ }
+}
+
+#undef mswap
+#undef mvswap
+#undef mpush
+#undef mpop
+#undef mmin
+#undef mnextsize
+#undef mnextswap
+#undef MAIN_QSORT_SMALL_THRESH
+#undef MAIN_QSORT_DEPTH_THRESH
+#undef MAIN_QSORT_STACK_SIZE
+
+
+/*---------------------------------------------*/
+/* Pre:
+ nblock > N_OVERSHOOT
+ block32 exists for [0 .. nblock-1 +N_OVERSHOOT]
+ ((UChar*)block32) [0 .. nblock-1] holds block
+ ptr exists for [0 .. nblock-1]
+
+ Post:
+ ((UChar*)block32) [0 .. nblock-1] holds block
+ All other areas of block32 destroyed
+ ftab [0 .. 65536 ] destroyed
+ ptr [0 .. nblock-1] holds sorted order
+ if (*budget < 0), sorting was abandoned
+*/
+
+#define BIGFREQ(b) (ftab[((b)+1) << 8] - ftab[(b) << 8])
+#define SETMASK (1 << 21)
+#define CLEARMASK (~(SETMASK))
+
+static
+void mainSort ( UInt32* ptr,
+ UChar* block,
+ UInt16* quadrant,
+ UInt32* ftab,
+ Int32 nblock,
+ Int32 verb,
+ Int32* budget )
+{
+ Int32 i, j, k, ss, sb;
+ Int32 runningOrder[256];
+ Bool bigDone[256];
+ Int32 copyStart[256];
+ Int32 copyEnd [256];
+ UChar c1;
+ Int32 numQSorted;
+ UInt16 s;
+ if (verb >= 4) VPrintf0 ( " main sort initialise ...\n" );
+
+ /*-- set up the 2-byte frequency table --*/
+ for (i = 65536; i >= 0; i--) ftab[i] = 0;
+
+ j = block[0] << 8;
+ i = nblock-1;
+ for (; i >= 3; i -= 4) {
+ quadrant[i] = 0;
+ j = (j >> 8) | ( ((UInt16)block[i]) << 8);
+ ftab[j]++;
+ quadrant[i-1] = 0;
+ j = (j >> 8) | ( ((UInt16)block[i-1]) << 8);
+ ftab[j]++;
+ quadrant[i-2] = 0;
+ j = (j >> 8) | ( ((UInt16)block[i-2]) << 8);
+ ftab[j]++;
+ quadrant[i-3] = 0;
+ j = (j >> 8) | ( ((UInt16)block[i-3]) << 8);
+ ftab[j]++;
+ }
+ for (; i >= 0; i--) {
+ quadrant[i] = 0;
+ j = (j >> 8) | ( ((UInt16)block[i]) << 8);
+ ftab[j]++;
+ }
+
+ /*-- (emphasises close relationship of block & quadrant) --*/
+ for (i = 0; i < BZ_N_OVERSHOOT; i++) {
+ block [nblock+i] = block[i];
+ quadrant[nblock+i] = 0;
+ }
+
+ if (verb >= 4) VPrintf0 ( " bucket sorting ...\n" );
+
+ /*-- Complete the initial radix sort --*/
+ for (i = 1; i <= 65536; i++) ftab[i] += ftab[i-1];
+
+ s = block[0] << 8;
+ i = nblock-1;
+ for (; i >= 3; i -= 4) {
+ s = (s >> 8) | (block[i] << 8);
+ j = ftab[s] -1;
+ ftab[s] = j;
+ ptr[j] = i;
+ s = (s >> 8) | (block[i-1] << 8);
+ j = ftab[s] -1;
+ ftab[s] = j;
+ ptr[j] = i-1;
+ s = (s >> 8) | (block[i-2] << 8);
+ j = ftab[s] -1;
+ ftab[s] = j;
+ ptr[j] = i-2;
+ s = (s >> 8) | (block[i-3] << 8);
+ j = ftab[s] -1;
+ ftab[s] = j;
+ ptr[j] = i-3;
+ }
+ for (; i >= 0; i--) {
+ s = (s >> 8) | (block[i] << 8);
+ j = ftab[s] -1;
+ ftab[s] = j;
+ ptr[j] = i;
+ }
+
+ /*--
+ Now ftab contains the first loc of every small bucket.
+ Calculate the running order, from smallest to largest
+ big bucket.
+ --*/
+ for (i = 0; i <= 255; i++) {
+ bigDone [i] = False;
+ runningOrder[i] = i;
+ }
+
+ {
+ Int32 vv;
+ Int32 h = 1;
+ do h = 3 * h + 1; while (h <= 256);
+ do {
+ h = h / 3;
+ for (i = h; i <= 255; i++) {
+ vv = runningOrder[i];
+ j = i;
+ while ( BIGFREQ(runningOrder[j-h]) > BIGFREQ(vv) ) {
+ runningOrder[j] = runningOrder[j-h];
+ j = j - h;
+ if (j <= (h - 1)) goto zero;
+ }
+ zero:
+ runningOrder[j] = vv;
+ }
+ } while (h != 1);
+ }
+
+ /*--
+ The main sorting loop.
+ --*/
+
+ numQSorted = 0;
+
+ for (i = 0; i <= 255; i++) {
+
+ /*--
+ Process big buckets, starting with the least full.
+ Basically this is a 3-step process in which we call
+ mainQSort3 to sort the small buckets [ss, j], but
+ also make a big effort to avoid the calls if we can.
+ --*/
+ ss = runningOrder[i];
+
+ /*--
+ Step 1:
+ Complete the big bucket [ss] by quicksorting
+ any unsorted small buckets [ss, j], for j != ss.
+ Hopefully previous pointer-scanning phases have already
+ completed many of the small buckets [ss, j], so
+ we don't have to sort them at all.
+ --*/
+ for (j = 0; j <= 255; j++) {
+ if (j != ss) {
+ sb = (ss << 8) + j;
+ if ( ! (ftab[sb] & SETMASK) ) {
+ Int32 lo = ftab[sb] & CLEARMASK;
+ Int32 hi = (ftab[sb+1] & CLEARMASK) - 1;
+ if (hi > lo) {
+ if (verb >= 4)
+ VPrintf4 ( " qsort [0x%x, 0x%x] "
+ "done %d this %d\n",
+ ss, j, numQSorted, hi - lo + 1 );
+ mainQSort3 (
+ ptr, block, quadrant, nblock,
+ lo, hi, BZ_N_RADIX, budget
+ );
+ numQSorted += (hi - lo + 1);
+ if (*budget < 0) return;
+ }
+ }
+ ftab[sb] |= SETMASK;
+ }
+ }
+
+ AssertH ( !bigDone[ss], 1006 );
+
+ /*--
+ Step 2:
+ Now scan this big bucket [ss] so as to synthesise the
+ sorted order for small buckets [t, ss] for all t,
+ including, magically, the bucket [ss,ss] too.
+ This will avoid doing Real Work in subsequent Step 1's.
+ --*/
+ {
+ for (j = 0; j <= 255; j++) {
+ copyStart[j] = ftab[(j << 8) + ss] & CLEARMASK;
+ copyEnd [j] = (ftab[(j << 8) + ss + 1] & CLEARMASK) - 1;
+ }
+ for (j = ftab[ss << 8] & CLEARMASK; j < copyStart[ss]; j++) {
+ k = ptr[j]-1; if (k < 0) k += nblock;
+ c1 = block[k];
+ if (!bigDone[c1])
+ ptr[ copyStart[c1]++ ] = k;
+ }
+ for (j = (ftab[(ss+1) << 8] & CLEARMASK) - 1; j > copyEnd[ss]; j--) {
+ k = ptr[j]-1; if (k < 0) k += nblock;
+ c1 = block[k];
+ if (!bigDone[c1])
+ ptr[ copyEnd[c1]-- ] = k;
+ }
+ }
+
+ AssertH ( (copyStart[ss]-1 == copyEnd[ss])
+ ||
+ /* Extremely rare case missing in bzip2-1.0.0 and 1.0.1.
+ Necessity for this case is demonstrated by compressing
+ a sequence of approximately 48.5 million of character
+ 251; 1.0.0/1.0.1 will then die here. */
+ (copyStart[ss] == 0 && copyEnd[ss] == nblock-1),
+ 1007 )
+
+ for (j = 0; j <= 255; j++) ftab[(j << 8) + ss] |= SETMASK;
+
+ /*--
+ Step 3:
+ The [ss] big bucket is now done. Record this fact,
+ and update the quadrant descriptors. Remember to
+ update quadrants in the overshoot area too, if
+ necessary. The "if (i < 255)" test merely skips
+ this updating for the last bucket processed, since
+ updating for the last bucket is pointless.
+
+ The quadrant array provides a way to incrementally
+ cache sort orderings, as they appear, so as to
+ make subsequent comparisons in fullGtU() complete
+ faster. For repetitive blocks this makes a big
+ difference (but not big enough to be able to avoid
+ the fallback sorting mechanism, exponential radix sort).
+
+ The precise meaning is: at all times:
+
+ for 0 <= i < nblock and 0 <= j <= nblock
+
+ if block[i] != block[j],
+
+ then the relative values of quadrant[i] and
+ quadrant[j] are meaningless.
+
+ else {
+ if quadrant[i] < quadrant[j]
+ then the string starting at i lexicographically
+ precedes the string starting at j
+
+ else if quadrant[i] > quadrant[j]
+ then the string starting at j lexicographically
+ precedes the string starting at i
+
+ else
+ the relative ordering of the strings starting
+ at i and j has not yet been determined.
+ }
+ --*/
+ bigDone[ss] = True;
+
+ if (i < 255) {
+ Int32 bbStart = ftab[ss << 8] & CLEARMASK;
+ Int32 bbSize = (ftab[(ss+1) << 8] & CLEARMASK) - bbStart;
+ Int32 shifts = 0;
+
+ while ((bbSize >> shifts) > 65534) shifts++;
+
+ for (j = bbSize-1; j >= 0; j--) {
+ Int32 a2update = ptr[bbStart + j];
+ UInt16 qVal = (UInt16)(j >> shifts);
+ quadrant[a2update] = qVal;
+ if (a2update < BZ_N_OVERSHOOT)
+ quadrant[a2update + nblock] = qVal;
+ }
+ AssertH ( ((bbSize-1) >> shifts) <= 65535, 1002 );
+ }
+
+ }
+
+ if (verb >= 4)
+ VPrintf3 ( " %d pointers, %d sorted, %d scanned\n",
+ nblock, numQSorted, nblock - numQSorted );
+}
+
+#undef BIGFREQ
+#undef SETMASK
+#undef CLEARMASK
+
+
+/*---------------------------------------------*/
+/* Pre:
+ nblock > 0
+ arr2 exists for [0 .. nblock-1 +N_OVERSHOOT]
+ ((UChar*)arr2) [0 .. nblock-1] holds block
+ arr1 exists for [0 .. nblock-1]
+
+ Post:
+ ((UChar*)arr2) [0 .. nblock-1] holds block
+ All other areas of block destroyed
+ ftab [ 0 .. 65536 ] destroyed
+ arr1 [0 .. nblock-1] holds sorted order
+*/
+void BZ2_blockSort ( EState* s )
+{
+ UInt32* ptr = s->ptr;
+ UChar* block = s->block;
+ UInt32* ftab = s->ftab;
+ Int32 nblock = s->nblock;
+ Int32 verb = s->verbosity;
+ Int32 wfact = s->workFactor;
+ UInt16* quadrant;
+ Int32 budget;
+ Int32 budgetInit;
+ Int32 i;
+
+ if (nblock < 10000) {
+ fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb );
+ } else {
+ /* Calculate the location for quadrant, remembering to get
+ the alignment right. Assumes that &(block[0]) is at least
+ 2-byte aligned -- this should be ok since block is really
+ the first section of arr2.
+ */
+ i = nblock+BZ_N_OVERSHOOT;
+ if (i & 1) i++;
+ quadrant = (UInt16*)(&(block[i]));
+
+ /* (wfact-1) / 3 puts the default-factor-30
+ transition point at very roughly the same place as
+ with v0.1 and v0.9.0.
+ Not that it particularly matters any more, since the
+ resulting compressed stream is now the same regardless
+ of whether or not we use the main sort or fallback sort.
+ */
+ if (wfact < 1 ) wfact = 1;
+ if (wfact > 100) wfact = 100;
+ budgetInit = nblock * ((wfact-1) / 3);
+ budget = budgetInit;
+
+ mainSort ( ptr, block, quadrant, ftab, nblock, verb, &budget );
+ if (verb >= 3)
+ VPrintf3 ( " %d work, %d block, ratio %5.2f\n",
+ budgetInit - budget,
+ nblock,
+ (float)(budgetInit - budget) /
+ (float)(nblock==0 ? 1 : nblock) );
+ if (budget < 0) {
+ if (verb >= 2)
+ VPrintf0 ( " too repetitive; using fallback"
+ " sorting algorithm\n" );
+ fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb );
+ }
+ }
+
+ s->origPtr = -1;
+ for (i = 0; i < s->nblock; i++)
+ if (ptr[i] == 0)
+ { s->origPtr = i; break; };
+
+ AssertH( s->origPtr != -1, 1003 );
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end blocksort.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/contrib/bzip2/bzip2.1 b/contrib/bzip2/bzip2.1
new file mode 100644
index 000000000000..ce3a78e6b4f9
--- /dev/null
+++ b/contrib/bzip2/bzip2.1
@@ -0,0 +1,454 @@
+.PU
+.TH bzip2 1
+.SH NAME
+bzip2, bunzip2 \- a block-sorting file compressor, v1.0.6
+.br
+bzcat \- decompresses files to stdout
+.br
+bzip2recover \- recovers data from damaged bzip2 files
+
+.SH SYNOPSIS
+.ll +8
+.B bzip2
+.RB [ " \-cdfkqstvzVL123456789 " ]
+[
+.I "filenames \&..."
+]
+.ll -8
+.br
+.B bunzip2
+.RB [ " \-fkvsVL " ]
+[
+.I "filenames \&..."
+]
+.br
+.B bzcat
+.RB [ " \-s " ]
+[
+.I "filenames \&..."
+]
+.br
+.B bzip2recover
+.I "filename"
+
+.SH DESCRIPTION
+.I bzip2
+compresses files using the Burrows-Wheeler block sorting
+text compression algorithm, and Huffman coding. Compression is
+generally considerably better than that achieved by more conventional
+LZ77/LZ78-based compressors, and approaches the performance of the PPM
+family of statistical compressors.
+
+The command-line options are deliberately very similar to
+those of
+.I GNU gzip,
+but they are not identical.
+
+.I bzip2
+expects a list of file names to accompany the
+command-line flags. Each file is replaced by a compressed version of
+itself, with the name "original_name.bz2".
+Each compressed file
+has the same modification date, permissions, and, when possible,
+ownership as the corresponding original, so that these properties can
+be correctly restored at decompression time. File name handling is
+naive in the sense that there is no mechanism for preserving original
+file names, permissions, ownerships or dates in filesystems which lack
+these concepts, or have serious file name length restrictions, such as
+MS-DOS.
+
+.I bzip2
+and
+.I bunzip2
+will by default not overwrite existing
+files. If you want this to happen, specify the \-f flag.
+
+If no file names are specified,
+.I bzip2
+compresses from standard
+input to standard output. In this case,
+.I bzip2
+will decline to
+write compressed output to a terminal, as this would be entirely
+incomprehensible and therefore pointless.
+
+.I bunzip2
+(or
+.I bzip2 \-d)
+decompresses all
+specified files. Files which were not created by
+.I bzip2
+will be detected and ignored, and a warning issued.
+.I bzip2
+attempts to guess the filename for the decompressed file
+from that of the compressed file as follows:
+
+ filename.bz2 becomes filename
+ filename.bz becomes filename
+ filename.tbz2 becomes filename.tar
+ filename.tbz becomes filename.tar
+ anyothername becomes anyothername.out
+
+If the file does not end in one of the recognised endings,
+.I .bz2,
+.I .bz,
+.I .tbz2
+or
+.I .tbz,
+.I bzip2
+complains that it cannot
+guess the name of the original file, and uses the original name
+with
+.I .out
+appended.
+
+As with compression, supplying no
+filenames causes decompression from
+standard input to standard output.
+
+.I bunzip2
+will correctly decompress a file which is the
+concatenation of two or more compressed files. The result is the
+concatenation of the corresponding uncompressed files. Integrity
+testing (\-t)
+of concatenated
+compressed files is also supported.
+
+You can also compress or decompress files to the standard output by
+giving the \-c flag. Multiple files may be compressed and
+decompressed like this. The resulting outputs are fed sequentially to
+stdout. Compression of multiple files
+in this manner generates a stream
+containing multiple compressed file representations. Such a stream
+can be decompressed correctly only by
+.I bzip2
+version 0.9.0 or
+later. Earlier versions of
+.I bzip2
+will stop after decompressing
+the first file in the stream.
+
+.I bzcat
+(or
+.I bzip2 -dc)
+decompresses all specified files to
+the standard output.
+
+.I bzip2
+will read arguments from the environment variables
+.I BZIP2
+and
+.I BZIP,
+in that order, and will process them
+before any arguments read from the command line. This gives a
+convenient way to supply default arguments.
+
+Compression is always performed, even if the compressed
+file is slightly
+larger than the original. Files of less than about one hundred bytes
+tend to get larger, since the compression mechanism has a constant
+overhead in the region of 50 bytes. Random data (including the output
+of most file compressors) is coded at about 8.05 bits per byte, giving
+an expansion of around 0.5%.
+
+As a self-check for your protection,
+.I
+bzip2
+uses 32-bit CRCs to
+make sure that the decompressed version of a file is identical to the
+original. This guards against corruption of the compressed data, and
+against undetected bugs in
+.I bzip2
+(hopefully very unlikely). The
+chances of data corruption going undetected is microscopic, about one
+chance in four billion for each file processed. Be aware, though, that
+the check occurs upon decompression, so it can only tell you that
+something is wrong. It can't help you
+recover the original uncompressed
+data. You can use
+.I bzip2recover
+to try to recover data from
+damaged files.
+
+Return values: 0 for a normal exit, 1 for environmental problems (file
+not found, invalid flags, I/O errors, &c), 2 to indicate a corrupt
+compressed file, 3 for an internal consistency error (eg, bug) which
+caused
+.I bzip2
+to panic.
+
+.SH OPTIONS
+.TP
+.B \-c --stdout
+Compress or decompress to standard output.
+.TP
+.B \-d --decompress
+Force decompression.
+.I bzip2,
+.I bunzip2
+and
+.I bzcat
+are
+really the same program, and the decision about what actions to take is
+done on the basis of which name is used. This flag overrides that
+mechanism, and forces
+.I bzip2
+to decompress.
+.TP
+.B \-z --compress
+The complement to \-d: forces compression, regardless of the
+invocation name.
+.TP
+.B \-t --test
+Check integrity of the specified file(s), but don't decompress them.
+This really performs a trial decompression and throws away the result.
+.TP
+.B \-f --force
+Force overwrite of output files. Normally,
+.I bzip2
+will not overwrite
+existing output files. Also forces
+.I bzip2
+to break hard links
+to files, which it otherwise wouldn't do.
+
+bzip2 normally declines to decompress files which don't have the
+correct magic header bytes. If forced (-f), however, it will pass
+such files through unmodified. This is how GNU gzip behaves.
+.TP
+.B \-k --keep
+Keep (don't delete) input files during compression
+or decompression.
+.TP
+.B \-s --small
+Reduce memory usage, for compression, decompression and testing. Files
+are decompressed and tested using a modified algorithm which only
+requires 2.5 bytes per block byte. This means any file can be
+decompressed in 2300k of memory, albeit at about half the normal speed.
+
+During compression, \-s selects a block size of 200k, which limits
+memory use to around the same figure, at the expense of your compression
+ratio. In short, if your machine is low on memory (8 megabytes or
+less), use \-s for everything. See MEMORY MANAGEMENT below.
+.TP
+.B \-q --quiet
+Suppress non-essential warning messages. Messages pertaining to
+I/O errors and other critical events will not be suppressed.
+.TP
+.B \-v --verbose
+Verbose mode -- show the compression ratio for each file processed.
+Further \-v's increase the verbosity level, spewing out lots of
+information which is primarily of interest for diagnostic purposes.
+.TP
+.B \-L --license -V --version
+Display the software version, license terms and conditions.
+.TP
+.B \-1 (or \-\-fast) to \-9 (or \-\-best)
+Set the block size to 100 k, 200 k .. 900 k when compressing. Has no
+effect when decompressing. See MEMORY MANAGEMENT below.
+The \-\-fast and \-\-best aliases are primarily for GNU gzip
+compatibility. In particular, \-\-fast doesn't make things
+significantly faster.
+And \-\-best merely selects the default behaviour.
+.TP
+.B \--
+Treats all subsequent arguments as file names, even if they start
+with a dash. This is so you can handle files with names beginning
+with a dash, for example: bzip2 \-- \-myfilename.
+.TP
+.B \--repetitive-fast --repetitive-best
+These flags are redundant in versions 0.9.5 and above. They provided
+some coarse control over the behaviour of the sorting algorithm in
+earlier versions, which was sometimes useful. 0.9.5 and above have an
+improved algorithm which renders these flags irrelevant.
+
+.SH MEMORY MANAGEMENT
+.I bzip2
+compresses large files in blocks. The block size affects
+both the compression ratio achieved, and the amount of memory needed for
+compression and decompression. The flags \-1 through \-9
+specify the block size to be 100,000 bytes through 900,000 bytes (the
+default) respectively. At decompression time, the block size used for
+compression is read from the header of the compressed file, and
+.I bunzip2
+then allocates itself just enough memory to decompress
+the file. Since block sizes are stored in compressed files, it follows
+that the flags \-1 to \-9 are irrelevant to and so ignored
+during decompression.
+
+Compression and decompression requirements,
+in bytes, can be estimated as:
+
+ Compression: 400k + ( 8 x block size )
+
+ Decompression: 100k + ( 4 x block size ), or
+ 100k + ( 2.5 x block size )
+
+Larger block sizes give rapidly diminishing marginal returns. Most of
+the compression comes from the first two or three hundred k of block
+size, a fact worth bearing in mind when using
+.I bzip2
+on small machines.
+It is also important to appreciate that the decompression memory
+requirement is set at compression time by the choice of block size.
+
+For files compressed with the default 900k block size,
+.I bunzip2
+will require about 3700 kbytes to decompress. To support decompression
+of any file on a 4 megabyte machine,
+.I bunzip2
+has an option to
+decompress using approximately half this amount of memory, about 2300
+kbytes. Decompression speed is also halved, so you should use this
+option only where necessary. The relevant flag is -s.
+
+In general, try and use the largest block size memory constraints allow,
+since that maximises the compression achieved. Compression and
+decompression speed are virtually unaffected by block size.
+
+Another significant point applies to files which fit in a single block
+-- that means most files you'd encounter using a large block size. The
+amount of real memory touched is proportional to the size of the file,
+since the file is smaller than a block. For example, compressing a file
+20,000 bytes long with the flag -9 will cause the compressor to
+allocate around 7600k of memory, but only touch 400k + 20000 * 8 = 560
+kbytes of it. Similarly, the decompressor will allocate 3700k but only
+touch 100k + 20000 * 4 = 180 kbytes.
+
+Here is a table which summarises the maximum memory usage for different
+block sizes. Also recorded is the total compressed size for 14 files of
+the Calgary Text Compression Corpus totalling 3,141,622 bytes. This
+column gives some feel for how compression varies with block size.
+These figures tend to understate the advantage of larger block sizes for
+larger files, since the Corpus is dominated by smaller files.
+
+ Compress Decompress Decompress Corpus
+ Flag usage usage -s usage Size
+
+ -1 1200k 500k 350k 914704
+ -2 2000k 900k 600k 877703
+ -3 2800k 1300k 850k 860338
+ -4 3600k 1700k 1100k 846899
+ -5 4400k 2100k 1350k 845160
+ -6 5200k 2500k 1600k 838626
+ -7 6100k 2900k 1850k 834096
+ -8 6800k 3300k 2100k 828642
+ -9 7600k 3700k 2350k 828642
+
+.SH RECOVERING DATA FROM DAMAGED FILES
+.I bzip2
+compresses files in blocks, usually 900kbytes long. Each
+block is handled independently. If a media or transmission error causes
+a multi-block .bz2
+file to become damaged, it may be possible to
+recover data from the undamaged blocks in the file.
+
+The compressed representation of each block is delimited by a 48-bit
+pattern, which makes it possible to find the block boundaries with
+reasonable certainty. Each block also carries its own 32-bit CRC, so
+damaged blocks can be distinguished from undamaged ones.
+
+.I bzip2recover
+is a simple program whose purpose is to search for
+blocks in .bz2 files, and write each block out into its own .bz2
+file. You can then use
+.I bzip2
+\-t
+to test the
+integrity of the resulting files, and decompress those which are
+undamaged.
+
+.I bzip2recover
+takes a single argument, the name of the damaged file,
+and writes a number of files "rec00001file.bz2",
+"rec00002file.bz2", etc, containing the extracted blocks.
+The output filenames are designed so that the use of
+wildcards in subsequent processing -- for example,
+"bzip2 -dc rec*file.bz2 > recovered_data" -- processes the files in
+the correct order.
+
+.I bzip2recover
+should be of most use dealing with large .bz2
+files, as these will contain many blocks. It is clearly
+futile to use it on damaged single-block files, since a
+damaged block cannot be recovered. If you wish to minimise
+any potential data loss through media or transmission errors,
+you might consider compressing with a smaller
+block size.
+
+.SH PERFORMANCE NOTES
+The sorting phase of compression gathers together similar strings in the
+file. Because of this, files containing very long runs of repeated
+symbols, like "aabaabaabaab ..." (repeated several hundred times) may
+compress more slowly than normal. Versions 0.9.5 and above fare much
+better than previous versions in this respect. The ratio between
+worst-case and average-case compression time is in the region of 10:1.
+For previous versions, this figure was more like 100:1. You can use the
+\-vvvv option to monitor progress in great detail, if you want.
+
+Decompression speed is unaffected by these phenomena.
+
+.I bzip2
+usually allocates several megabytes of memory to operate
+in, and then charges all over it in a fairly random fashion. This means
+that performance, both for compressing and decompressing, is largely
+determined by the speed at which your machine can service cache misses.
+Because of this, small changes to the code to reduce the miss rate have
+been observed to give disproportionately large performance improvements.
+I imagine
+.I bzip2
+will perform best on machines with very large caches.
+
+.SH CAVEATS
+I/O error messages are not as helpful as they could be.
+.I bzip2
+tries hard to detect I/O errors and exit cleanly, but the details of
+what the problem is sometimes seem rather misleading.
+
+This manual page pertains to version 1.0.6 of
+.I bzip2.
+Compressed data created by this version is entirely forwards and
+backwards compatible with the previous public releases, versions
+0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, 1.0.2 and above, but with the following
+exception: 0.9.0 and above can correctly decompress multiple
+concatenated compressed files. 0.1pl2 cannot do this; it will stop
+after decompressing just the first file in the stream.
+
+.I bzip2recover
+versions prior to 1.0.2 used 32-bit integers to represent
+bit positions in compressed files, so they could not handle compressed
+files more than 512 megabytes long. Versions 1.0.2 and above use
+64-bit ints on some platforms which support them (GNU supported
+targets, and Windows). To establish whether or not bzip2recover was
+built with such a limitation, run it without arguments. In any event
+you can build yourself an unlimited version if you can recompile it
+with MaybeUInt64 set to be an unsigned 64-bit integer.
+
+
+
+.SH AUTHOR
+Julian Seward, jsewardbzip.org.
+
+http://www.bzip.org
+
+The ideas embodied in
+.I bzip2
+are due to (at least) the following
+people: Michael Burrows and David Wheeler (for the block sorting
+transformation), David Wheeler (again, for the Huffman coder), Peter
+Fenwick (for the structured coding model in the original
+.I bzip,
+and many refinements), and Alistair Moffat, Radford Neal and Ian Witten
+(for the arithmetic coder in the original
+.I bzip).
+I am much
+indebted for their help, support and advice. See the manual in the
+source distribution for pointers to sources of documentation. Christian
+von Roques encouraged me to look for faster sorting algorithms, so as to
+speed up compression. Bela Lubkin encouraged me to improve the
+worst-case compression performance.
+Donna Robinson XMLised the documentation.
+The bz* scripts are derived from those of GNU gzip.
+Many people sent patches, helped
+with portability problems, lent machines, gave advice and were generally
+helpful.
diff --git a/contrib/bzip2/bzip2.c b/contrib/bzip2/bzip2.c
new file mode 100644
index 000000000000..6de9d1d14889
--- /dev/null
+++ b/contrib/bzip2/bzip2.c
@@ -0,0 +1,2034 @@
+
+/*-----------------------------------------------------------*/
+/*--- A block-sorting, lossless compressor bzip2.c ---*/
+/*-----------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+ This file is part of bzip2/libbzip2, a program and library for
+ lossless, block-sorting data compression.
+
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+ Please read the WARNING, DISCLAIMER and PATENTS sections in the
+ README file.
+
+ This program is released under the terms of the license contained
+ in the file LICENSE.
+ ------------------------------------------------------------------ */
+
+
+/* Place a 1 beside your platform, and 0 elsewhere.
+ Generic 32-bit Unix.
+ Also works on 64-bit Unix boxes.
+ This is the default.
+*/
+#define BZ_UNIX 1
+
+/*--
+ Win32, as seen by Jacob Navia's excellent
+ port of (Chris Fraser & David Hanson)'s excellent
+ lcc compiler. Or with MS Visual C.
+ This is selected automatically if compiled by a compiler which
+ defines _WIN32, not including the Cygwin GCC.
+--*/
+#define BZ_LCCWIN32 0
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#undef BZ_LCCWIN32
+#define BZ_LCCWIN32 1
+#undef BZ_UNIX
+#define BZ_UNIX 0
+#endif
+
+
+/*---------------------------------------------*/
+/*--
+ Some stuff for all platforms.
+--*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <signal.h>
+#include <math.h>
+#include <errno.h>
+#include <ctype.h>
+#include "bzlib.h"
+
+#define ERROR_IF_EOF(i) { if ((i) == EOF) ioError(); }
+#define ERROR_IF_NOT_ZERO(i) { if ((i) != 0) ioError(); }
+#define ERROR_IF_MINUS_ONE(i) { if ((i) == (-1)) ioError(); }
+
+
+/*---------------------------------------------*/
+/*--
+ Platform-specific stuff.
+--*/
+
+#if BZ_UNIX
+# include <fcntl.h>
+# include <sys/types.h>
+# include <utime.h>
+# include <unistd.h>
+# include <sys/stat.h>
+# include <sys/times.h>
+
+# define PATH_SEP '/'
+# define MY_LSTAT lstat
+# define MY_STAT stat
+# define MY_S_ISREG S_ISREG
+# define MY_S_ISDIR S_ISDIR
+
+# define APPEND_FILESPEC(root, name) \
+ root=snocString((root), (name))
+
+# define APPEND_FLAG(root, name) \
+ root=snocString((root), (name))
+
+# define SET_BINARY_MODE(fd) /**/
+
+# ifdef __GNUC__
+# define NORETURN __attribute__ ((noreturn))
+# else
+# define NORETURN /**/
+# endif
+
+# ifdef __DJGPP__
+# include <io.h>
+# include <fcntl.h>
+# undef MY_LSTAT
+# undef MY_STAT
+# define MY_LSTAT stat
+# define MY_STAT stat
+# undef SET_BINARY_MODE
+# define SET_BINARY_MODE(fd) \
+ do { \
+ int retVal = setmode ( fileno ( fd ), \
+ O_BINARY ); \
+ ERROR_IF_MINUS_ONE ( retVal ); \
+ } while ( 0 )
+# endif
+
+# ifdef __CYGWIN__
+# include <io.h>
+# include <fcntl.h>
+# undef SET_BINARY_MODE
+# define SET_BINARY_MODE(fd) \
+ do { \
+ int retVal = setmode ( fileno ( fd ), \
+ O_BINARY ); \
+ ERROR_IF_MINUS_ONE ( retVal ); \
+ } while ( 0 )
+# endif
+#endif /* BZ_UNIX */
+
+
+
+#if BZ_LCCWIN32
+# include <io.h>
+# include <fcntl.h>
+# include <sys\stat.h>
+
+# define NORETURN /**/
+# define PATH_SEP '\\'
+# define MY_LSTAT _stat
+# define MY_STAT _stat
+# define MY_S_ISREG(x) ((x) & _S_IFREG)
+# define MY_S_ISDIR(x) ((x) & _S_IFDIR)
+
+# define APPEND_FLAG(root, name) \
+ root=snocString((root), (name))
+
+# define APPEND_FILESPEC(root, name) \
+ root = snocString ((root), (name))
+
+# define SET_BINARY_MODE(fd) \
+ do { \
+ int retVal = setmode ( fileno ( fd ), \
+ O_BINARY ); \
+ ERROR_IF_MINUS_ONE ( retVal ); \
+ } while ( 0 )
+
+#endif /* BZ_LCCWIN32 */
+
+
+/*---------------------------------------------*/
+/*--
+ Some more stuff for all platforms :-)
+--*/
+
+typedef char Char;
+typedef unsigned char Bool;
+typedef unsigned char UChar;
+typedef int Int32;
+typedef unsigned int UInt32;
+typedef short Int16;
+typedef unsigned short UInt16;
+
+#define True ((Bool)1)
+#define False ((Bool)0)
+
+/*--
+ IntNative is your platform's `native' int size.
+ Only here to avoid probs with 64-bit platforms.
+--*/
+typedef int IntNative;
+
+
+/*---------------------------------------------------*/
+/*--- Misc (file handling) data decls ---*/
+/*---------------------------------------------------*/
+
+Int32 verbosity;
+Bool keepInputFiles, smallMode, deleteOutputOnInterrupt;
+Bool forceOverwrite, testFailsExist, unzFailsExist, noisy;
+Int32 numFileNames, numFilesProcessed, blockSize100k;
+Int32 exitValue;
+
+/*-- source modes; F==file, I==stdin, O==stdout --*/
+#define SM_I2O 1
+#define SM_F2O 2
+#define SM_F2F 3
+
+/*-- operation modes --*/
+#define OM_Z 1
+#define OM_UNZ 2
+#define OM_TEST 3
+
+Int32 opMode;
+Int32 srcMode;
+
+#define FILE_NAME_LEN 1034
+
+Int32 longestFileName;
+Char inName [FILE_NAME_LEN];
+Char outName[FILE_NAME_LEN];
+Char tmpName[FILE_NAME_LEN];
+Char *progName;
+Char progNameReally[FILE_NAME_LEN];
+FILE *outputHandleJustInCase;
+Int32 workFactor;
+
+static void panic ( const Char* ) NORETURN;
+static void ioError ( void ) NORETURN;
+static void outOfMemory ( void ) NORETURN;
+static void configError ( void ) NORETURN;
+static void crcError ( void ) NORETURN;
+static void cleanUpAndFail ( Int32 ) NORETURN;
+static void compressedStreamEOF ( void ) NORETURN;
+
+static void copyFileName ( Char*, Char* );
+static void* myMalloc ( Int32 );
+static void applySavedFileAttrToOutputFile ( IntNative fd );
+
+
+
+/*---------------------------------------------------*/
+/*--- An implementation of 64-bit ints. Sigh. ---*/
+/*--- Roll on widespread deployment of ANSI C9X ! ---*/
+/*---------------------------------------------------*/
+
+typedef
+ struct { UChar b[8]; }
+ UInt64;
+
+
+static
+void uInt64_from_UInt32s ( UInt64* n, UInt32 lo32, UInt32 hi32 )
+{
+ n->b[7] = (UChar)((hi32 >> 24) & 0xFF);
+ n->b[6] = (UChar)((hi32 >> 16) & 0xFF);
+ n->b[5] = (UChar)((hi32 >> 8) & 0xFF);
+ n->b[4] = (UChar) (hi32 & 0xFF);
+ n->b[3] = (UChar)((lo32 >> 24) & 0xFF);
+ n->b[2] = (UChar)((lo32 >> 16) & 0xFF);
+ n->b[1] = (UChar)((lo32 >> 8) & 0xFF);
+ n->b[0] = (UChar) (lo32 & 0xFF);
+}
+
+
+static
+double uInt64_to_double ( UInt64* n )
+{
+ Int32 i;
+ double base = 1.0;
+ double sum = 0.0;
+ for (i = 0; i < 8; i++) {
+ sum += base * (double)(n->b[i]);
+ base *= 256.0;
+ }
+ return sum;
+}
+
+
+static
+Bool uInt64_isZero ( UInt64* n )
+{
+ Int32 i;
+ for (i = 0; i < 8; i++)
+ if (n->b[i] != 0) return 0;
+ return 1;
+}
+
+
+/* Divide *n by 10, and return the remainder. */
+static
+Int32 uInt64_qrm10 ( UInt64* n )
+{
+ UInt32 rem, tmp;
+ Int32 i;
+ rem = 0;
+ for (i = 7; i >= 0; i--) {
+ tmp = rem * 256 + n->b[i];
+ n->b[i] = tmp / 10;
+ rem = tmp % 10;
+ }
+ return rem;
+}
+
+
+/* ... and the Whole Entire Point of all this UInt64 stuff is
+ so that we can supply the following function.
+*/
+static
+void uInt64_toAscii ( char* outbuf, UInt64* n )
+{
+ Int32 i, q;
+ UChar buf[32];
+ Int32 nBuf = 0;
+ UInt64 n_copy = *n;
+ do {
+ q = uInt64_qrm10 ( &n_copy );
+ buf[nBuf] = q + '0';
+ nBuf++;
+ } while (!uInt64_isZero(&n_copy));
+ outbuf[nBuf] = 0;
+ for (i = 0; i < nBuf; i++)
+ outbuf[i] = buf[nBuf-i-1];
+}
+
+
+/*---------------------------------------------------*/
+/*--- Processing of complete files and streams ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------*/
+static
+Bool myfeof ( FILE* f )
+{
+ Int32 c = fgetc ( f );
+ if (c == EOF) return True;
+ ungetc ( c, f );
+ return False;
+}
+
+
+/*---------------------------------------------*/
+static
+void compressStream ( FILE *stream, FILE *zStream )
+{
+ BZFILE* bzf = NULL;
+ UChar ibuf[5000];
+ Int32 nIbuf;
+ UInt32 nbytes_in_lo32, nbytes_in_hi32;
+ UInt32 nbytes_out_lo32, nbytes_out_hi32;
+ Int32 bzerr, bzerr_dummy, ret;
+
+ SET_BINARY_MODE(stream);
+ SET_BINARY_MODE(zStream);
+
+ if (ferror(stream)) goto errhandler_io;
+ if (ferror(zStream)) goto errhandler_io;
+
+ bzf = BZ2_bzWriteOpen ( &bzerr, zStream,
+ blockSize100k, verbosity, workFactor );
+ if (bzerr != BZ_OK) goto errhandler;
+
+ if (verbosity >= 2) fprintf ( stderr, "\n" );
+
+ while (True) {
+
+ if (myfeof(stream)) break;
+ nIbuf = fread ( ibuf, sizeof(UChar), 5000, stream );
+ if (ferror(stream)) goto errhandler_io;
+ if (nIbuf > 0) BZ2_bzWrite ( &bzerr, bzf, (void*)ibuf, nIbuf );
+ if (bzerr != BZ_OK) goto errhandler;
+
+ }
+
+ BZ2_bzWriteClose64 ( &bzerr, bzf, 0,
+ &nbytes_in_lo32, &nbytes_in_hi32,
+ &nbytes_out_lo32, &nbytes_out_hi32 );
+ if (bzerr != BZ_OK) goto errhandler;
+
+ if (ferror(zStream)) goto errhandler_io;
+ ret = fflush ( zStream );
+ if (ret == EOF) goto errhandler_io;
+ if (zStream != stdout) {
+ Int32 fd = fileno ( zStream );
+ if (fd < 0) goto errhandler_io;
+ applySavedFileAttrToOutputFile ( fd );
+ ret = fclose ( zStream );
+ outputHandleJustInCase = NULL;
+ if (ret == EOF) goto errhandler_io;
+ }
+ outputHandleJustInCase = NULL;
+ if (ferror(stream)) goto errhandler_io;
+ ret = fclose ( stream );
+ if (ret == EOF) goto errhandler_io;
+
+ if (verbosity >= 1) {
+ if (nbytes_in_lo32 == 0 && nbytes_in_hi32 == 0) {
+ fprintf ( stderr, " no data compressed.\n");
+ } else {
+ Char buf_nin[32], buf_nout[32];
+ UInt64 nbytes_in, nbytes_out;
+ double nbytes_in_d, nbytes_out_d;
+ uInt64_from_UInt32s ( &nbytes_in,
+ nbytes_in_lo32, nbytes_in_hi32 );
+ uInt64_from_UInt32s ( &nbytes_out,
+ nbytes_out_lo32, nbytes_out_hi32 );
+ nbytes_in_d = uInt64_to_double ( &nbytes_in );
+ nbytes_out_d = uInt64_to_double ( &nbytes_out );
+ uInt64_toAscii ( buf_nin, &nbytes_in );
+ uInt64_toAscii ( buf_nout, &nbytes_out );
+ fprintf ( stderr, "%6.3f:1, %6.3f bits/byte, "
+ "%5.2f%% saved, %s in, %s out.\n",
+ nbytes_in_d / nbytes_out_d,
+ (8.0 * nbytes_out_d) / nbytes_in_d,
+ 100.0 * (1.0 - nbytes_out_d / nbytes_in_d),
+ buf_nin,
+ buf_nout
+ );
+ }
+ }
+
+ return;
+
+ errhandler:
+ BZ2_bzWriteClose64 ( &bzerr_dummy, bzf, 1,
+ &nbytes_in_lo32, &nbytes_in_hi32,
+ &nbytes_out_lo32, &nbytes_out_hi32 );
+ switch (bzerr) {
+ case BZ_CONFIG_ERROR:
+ configError(); break;
+ case BZ_MEM_ERROR:
+ outOfMemory (); break;
+ case BZ_IO_ERROR:
+ errhandler_io:
+ ioError(); break;
+ default:
+ panic ( "compress:unexpected error" );
+ }
+
+ panic ( "compress:end" );
+ /*notreached*/
+}
+
+
+
+/*---------------------------------------------*/
+static
+Bool uncompressStream ( FILE *zStream, FILE *stream )
+{
+ BZFILE* bzf = NULL;
+ Int32 bzerr, bzerr_dummy, ret, nread, streamNo, i;
+ UChar obuf[5000];
+ UChar unused[BZ_MAX_UNUSED];
+ Int32 nUnused;
+ void* unusedTmpV;
+ UChar* unusedTmp;
+
+ nUnused = 0;
+ streamNo = 0;
+
+ SET_BINARY_MODE(stream);
+ SET_BINARY_MODE(zStream);
+
+ if (ferror(stream)) goto errhandler_io;
+ if (ferror(zStream)) goto errhandler_io;
+
+ while (True) {
+
+ bzf = BZ2_bzReadOpen (
+ &bzerr, zStream, verbosity,
+ (int)smallMode, unused, nUnused
+ );
+ if (bzf == NULL || bzerr != BZ_OK) goto errhandler;
+ streamNo++;
+
+ while (bzerr == BZ_OK) {
+ nread = BZ2_bzRead ( &bzerr, bzf, obuf, 5000 );
+ if (bzerr == BZ_DATA_ERROR_MAGIC) goto trycat;
+ if ((bzerr == BZ_OK || bzerr == BZ_STREAM_END) && nread > 0)
+ fwrite ( obuf, sizeof(UChar), nread, stream );
+ if (ferror(stream)) goto errhandler_io;
+ }
+ if (bzerr != BZ_STREAM_END) goto errhandler;
+
+ BZ2_bzReadGetUnused ( &bzerr, bzf, &unusedTmpV, &nUnused );
+ if (bzerr != BZ_OK) panic ( "decompress:bzReadGetUnused" );
+
+ unusedTmp = (UChar*)unusedTmpV;
+ for (i = 0; i < nUnused; i++) unused[i] = unusedTmp[i];
+
+ BZ2_bzReadClose ( &bzerr, bzf );
+ if (bzerr != BZ_OK) panic ( "decompress:bzReadGetUnused" );
+
+ if (nUnused == 0 && myfeof(zStream)) break;
+ }
+
+ closeok:
+ if (ferror(zStream)) goto errhandler_io;
+ if (stream != stdout) {
+ Int32 fd = fileno ( stream );
+ if (fd < 0) goto errhandler_io;
+ applySavedFileAttrToOutputFile ( fd );
+ }
+ ret = fclose ( zStream );
+ if (ret == EOF) goto errhandler_io;
+
+ if (ferror(stream)) goto errhandler_io;
+ ret = fflush ( stream );
+ if (ret != 0) goto errhandler_io;
+ if (stream != stdout) {
+ ret = fclose ( stream );
+ outputHandleJustInCase = NULL;
+ if (ret == EOF) goto errhandler_io;
+ }
+ outputHandleJustInCase = NULL;
+ if (verbosity >= 2) fprintf ( stderr, "\n " );
+ return True;
+
+ trycat:
+ if (forceOverwrite) {
+ rewind(zStream);
+ while (True) {
+ if (myfeof(zStream)) break;
+ nread = fread ( obuf, sizeof(UChar), 5000, zStream );
+ if (ferror(zStream)) goto errhandler_io;
+ if (nread > 0) fwrite ( obuf, sizeof(UChar), nread, stream );
+ if (ferror(stream)) goto errhandler_io;
+ }
+ goto closeok;
+ }
+
+ errhandler:
+ BZ2_bzReadClose ( &bzerr_dummy, bzf );
+ switch (bzerr) {
+ case BZ_CONFIG_ERROR:
+ configError(); break;
+ case BZ_IO_ERROR:
+ errhandler_io:
+ ioError(); break;
+ case BZ_DATA_ERROR:
+ crcError();
+ case BZ_MEM_ERROR:
+ outOfMemory();
+ case BZ_UNEXPECTED_EOF:
+ compressedStreamEOF();
+ case BZ_DATA_ERROR_MAGIC:
+ if (zStream != stdin) fclose(zStream);
+ if (stream != stdout) fclose(stream);
+ if (streamNo == 1) {
+ return False;
+ } else {
+ if (noisy)
+ fprintf ( stderr,
+ "\n%s: %s: trailing garbage after EOF ignored\n",
+ progName, inName );
+ return True;
+ }
+ default:
+ panic ( "decompress:unexpected error" );
+ }
+
+ panic ( "decompress:end" );
+ return True; /*notreached*/
+}
+
+
+/*---------------------------------------------*/
+static
+Bool testStream ( FILE *zStream )
+{
+ BZFILE* bzf = NULL;
+ Int32 bzerr, bzerr_dummy, ret, nread, streamNo, i;
+ UChar obuf[5000];
+ UChar unused[BZ_MAX_UNUSED];
+ Int32 nUnused;
+ void* unusedTmpV;
+ UChar* unusedTmp;
+
+ nUnused = 0;
+ streamNo = 0;
+
+ SET_BINARY_MODE(zStream);
+ if (ferror(zStream)) goto errhandler_io;
+
+ while (True) {
+
+ bzf = BZ2_bzReadOpen (
+ &bzerr, zStream, verbosity,
+ (int)smallMode, unused, nUnused
+ );
+ if (bzf == NULL || bzerr != BZ_OK) goto errhandler;
+ streamNo++;
+
+ while (bzerr == BZ_OK) {
+ nread = BZ2_bzRead ( &bzerr, bzf, obuf, 5000 );
+ if (bzerr == BZ_DATA_ERROR_MAGIC) goto errhandler;
+ }
+ if (bzerr != BZ_STREAM_END) goto errhandler;
+
+ BZ2_bzReadGetUnused ( &bzerr, bzf, &unusedTmpV, &nUnused );
+ if (bzerr != BZ_OK) panic ( "test:bzReadGetUnused" );
+
+ unusedTmp = (UChar*)unusedTmpV;
+ for (i = 0; i < nUnused; i++) unused[i] = unusedTmp[i];
+
+ BZ2_bzReadClose ( &bzerr, bzf );
+ if (bzerr != BZ_OK) panic ( "test:bzReadGetUnused" );
+ if (nUnused == 0 && myfeof(zStream)) break;
+
+ }
+
+ if (ferror(zStream)) goto errhandler_io;
+ ret = fclose ( zStream );
+ if (ret == EOF) goto errhandler_io;
+
+ if (verbosity >= 2) fprintf ( stderr, "\n " );
+ return True;
+
+ errhandler:
+ BZ2_bzReadClose ( &bzerr_dummy, bzf );
+ if (verbosity == 0)
+ fprintf ( stderr, "%s: %s: ", progName, inName );
+ switch (bzerr) {
+ case BZ_CONFIG_ERROR:
+ configError(); break;
+ case BZ_IO_ERROR:
+ errhandler_io:
+ ioError(); break;
+ case BZ_DATA_ERROR:
+ fprintf ( stderr,
+ "data integrity (CRC) error in data\n" );
+ return False;
+ case BZ_MEM_ERROR:
+ outOfMemory();
+ case BZ_UNEXPECTED_EOF:
+ fprintf ( stderr,
+ "file ends unexpectedly\n" );
+ return False;
+ case BZ_DATA_ERROR_MAGIC:
+ if (zStream != stdin) fclose(zStream);
+ if (streamNo == 1) {
+ fprintf ( stderr,
+ "bad magic number (file not created by bzip2)\n" );
+ return False;
+ } else {
+ if (noisy)
+ fprintf ( stderr,
+ "trailing garbage after EOF ignored\n" );
+ return True;
+ }
+ default:
+ panic ( "test:unexpected error" );
+ }
+
+ panic ( "test:end" );
+ return True; /*notreached*/
+}
+
+
+/*---------------------------------------------------*/
+/*--- Error [non-] handling grunge ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------*/
+static
+void setExit ( Int32 v )
+{
+ if (v > exitValue) exitValue = v;
+}
+
+
+/*---------------------------------------------*/
+static
+void cadvise ( void )
+{
+ if (noisy)
+ fprintf (
+ stderr,
+ "\nIt is possible that the compressed file(s) have become corrupted.\n"
+ "You can use the -tvv option to test integrity of such files.\n\n"
+ "You can use the `bzip2recover' program to attempt to recover\n"
+ "data from undamaged sections of corrupted files.\n\n"
+ );
+}
+
+
+/*---------------------------------------------*/
+static
+void showFileNames ( void )
+{
+ if (noisy)
+ fprintf (
+ stderr,
+ "\tInput file = %s, output file = %s\n",
+ inName, outName
+ );
+}
+
+
+/*---------------------------------------------*/
+static
+void cleanUpAndFail ( Int32 ec )
+{
+ IntNative retVal;
+ struct MY_STAT statBuf;
+
+ if ( srcMode == SM_F2F
+ && opMode != OM_TEST
+ && deleteOutputOnInterrupt ) {
+
+ /* Check whether input file still exists. Delete output file
+ only if input exists to avoid loss of data. Joerg Prante, 5
+ January 2002. (JRS 06-Jan-2002: other changes in 1.0.2 mean
+ this is less likely to happen. But to be ultra-paranoid, we
+ do the check anyway.) */
+ retVal = MY_STAT ( inName, &statBuf );
+ if (retVal == 0) {
+ if (noisy)
+ fprintf ( stderr,
+ "%s: Deleting output file %s, if it exists.\n",
+ progName, outName );
+ if (outputHandleJustInCase != NULL)
+ fclose ( outputHandleJustInCase );
+ retVal = remove ( outName );
+ if (retVal != 0)
+ fprintf ( stderr,
+ "%s: WARNING: deletion of output file "
+ "(apparently) failed.\n",
+ progName );
+ } else {
+ fprintf ( stderr,
+ "%s: WARNING: deletion of output file suppressed\n",
+ progName );
+ fprintf ( stderr,
+ "%s: since input file no longer exists. Output file\n",
+ progName );
+ fprintf ( stderr,
+ "%s: `%s' may be incomplete.\n",
+ progName, outName );
+ fprintf ( stderr,
+ "%s: I suggest doing an integrity test (bzip2 -tv)"
+ " of it.\n",
+ progName );
+ }
+ }
+
+ if (noisy && numFileNames > 0 && numFilesProcessed < numFileNames) {
+ fprintf ( stderr,
+ "%s: WARNING: some files have not been processed:\n"
+ "%s: %d specified on command line, %d not processed yet.\n\n",
+ progName, progName,
+ numFileNames, numFileNames - numFilesProcessed );
+ }
+ setExit(ec);
+ exit(exitValue);
+}
+
+
+/*---------------------------------------------*/
+static
+void panic ( const Char* s )
+{
+ fprintf ( stderr,
+ "\n%s: PANIC -- internal consistency error:\n"
+ "\t%s\n"
+ "\tThis is a BUG. Please report it to me at:\n"
+ "\tjseward@bzip.org\n",
+ progName, s );
+ showFileNames();
+ cleanUpAndFail( 3 );
+}
+
+
+/*---------------------------------------------*/
+static
+void crcError ( void )
+{
+ fprintf ( stderr,
+ "\n%s: Data integrity error when decompressing.\n",
+ progName );
+ showFileNames();
+ cadvise();
+ cleanUpAndFail( 2 );
+}
+
+
+/*---------------------------------------------*/
+static
+void compressedStreamEOF ( void )
+{
+ if (noisy) {
+ fprintf ( stderr,
+ "\n%s: Compressed file ends unexpectedly;\n\t"
+ "perhaps it is corrupted? *Possible* reason follows.\n",
+ progName );
+ perror ( progName );
+ showFileNames();
+ cadvise();
+ }
+ cleanUpAndFail( 2 );
+}
+
+
+/*---------------------------------------------*/
+static
+void ioError ( void )
+{
+ fprintf ( stderr,
+ "\n%s: I/O or other error, bailing out. "
+ "Possible reason follows.\n",
+ progName );
+ perror ( progName );
+ showFileNames();
+ cleanUpAndFail( 1 );
+}
+
+
+/*---------------------------------------------*/
+static
+void mySignalCatcher ( IntNative n )
+{
+ fprintf ( stderr,
+ "\n%s: Control-C or similar caught, quitting.\n",
+ progName );
+ cleanUpAndFail(1);
+}
+
+
+/*---------------------------------------------*/
+static
+void mySIGSEGVorSIGBUScatcher ( IntNative n )
+{
+ if (opMode == OM_Z)
+ fprintf (
+ stderr,
+ "\n%s: Caught a SIGSEGV or SIGBUS whilst compressing.\n"
+ "\n"
+ " Possible causes are (most likely first):\n"
+ " (1) This computer has unreliable memory or cache hardware\n"
+ " (a surprisingly common problem; try a different machine.)\n"
+ " (2) A bug in the compiler used to create this executable\n"
+ " (unlikely, if you didn't compile bzip2 yourself.)\n"
+ " (3) A real bug in bzip2 -- I hope this should never be the case.\n"
+ " The user's manual, Section 4.3, has more info on (1) and (2).\n"
+ " \n"
+ " If you suspect this is a bug in bzip2, or are unsure about (1)\n"
+ " or (2), feel free to report it to me at: jseward@bzip.org.\n"
+ " Section 4.3 of the user's manual describes the info a useful\n"
+ " bug report should have. If the manual is available on your\n"
+ " system, please try and read it before mailing me. If you don't\n"
+ " have the manual or can't be bothered to read it, mail me anyway.\n"
+ "\n",
+ progName );
+ else
+ fprintf (
+ stderr,
+ "\n%s: Caught a SIGSEGV or SIGBUS whilst decompressing.\n"
+ "\n"
+ " Possible causes are (most likely first):\n"
+ " (1) The compressed data is corrupted, and bzip2's usual checks\n"
+ " failed to detect this. Try bzip2 -tvv my_file.bz2.\n"
+ " (2) This computer has unreliable memory or cache hardware\n"
+ " (a surprisingly common problem; try a different machine.)\n"
+ " (3) A bug in the compiler used to create this executable\n"
+ " (unlikely, if you didn't compile bzip2 yourself.)\n"
+ " (4) A real bug in bzip2 -- I hope this should never be the case.\n"
+ " The user's manual, Section 4.3, has more info on (2) and (3).\n"
+ " \n"
+ " If you suspect this is a bug in bzip2, or are unsure about (2)\n"
+ " or (3), feel free to report it to me at: jseward@bzip.org.\n"
+ " Section 4.3 of the user's manual describes the info a useful\n"
+ " bug report should have. If the manual is available on your\n"
+ " system, please try and read it before mailing me. If you don't\n"
+ " have the manual or can't be bothered to read it, mail me anyway.\n"
+ "\n",
+ progName );
+
+ showFileNames();
+ if (opMode == OM_Z)
+ cleanUpAndFail( 3 ); else
+ { cadvise(); cleanUpAndFail( 2 ); }
+}
+
+
+/*---------------------------------------------*/
+static
+void outOfMemory ( void )
+{
+ fprintf ( stderr,
+ "\n%s: couldn't allocate enough memory\n",
+ progName );
+ showFileNames();
+ cleanUpAndFail(1);
+}
+
+
+/*---------------------------------------------*/
+static
+void configError ( void )
+{
+ fprintf ( stderr,
+ "bzip2: I'm not configured correctly for this platform!\n"
+ "\tI require Int32, Int16 and Char to have sizes\n"
+ "\tof 4, 2 and 1 bytes to run properly, and they don't.\n"
+ "\tProbably you can fix this by defining them correctly,\n"
+ "\tand recompiling. Bye!\n" );
+ setExit(3);
+ exit(exitValue);
+}
+
+
+/*---------------------------------------------------*/
+/*--- The main driver machinery ---*/
+/*---------------------------------------------------*/
+
+/* All rather crufty. The main problem is that input files
+ are stat()d multiple times before use. This should be
+ cleaned up.
+*/
+
+/*---------------------------------------------*/
+static
+void pad ( Char *s )
+{
+ Int32 i;
+ if ( (Int32)strlen(s) >= longestFileName ) return;
+ for (i = 1; i <= longestFileName - (Int32)strlen(s); i++)
+ fprintf ( stderr, " " );
+}
+
+
+/*---------------------------------------------*/
+static
+void copyFileName ( Char* to, Char* from )
+{
+ if ( strlen(from) > FILE_NAME_LEN-10 ) {
+ fprintf (
+ stderr,
+ "bzip2: file name\n`%s'\n"
+ "is suspiciously (more than %d chars) long.\n"
+ "Try using a reasonable file name instead. Sorry! :-)\n",
+ from, FILE_NAME_LEN-10
+ );
+ setExit(1);
+ exit(exitValue);
+ }
+
+ strncpy(to,from,FILE_NAME_LEN-10);
+ to[FILE_NAME_LEN-10]='\0';
+}
+
+
+/*---------------------------------------------*/
+static
+Bool fileExists ( Char* name )
+{
+ FILE *tmp = fopen ( name, "rb" );
+ Bool exists = (tmp != NULL);
+ if (tmp != NULL) fclose ( tmp );
+ return exists;
+}
+
+
+/*---------------------------------------------*/
+/* Open an output file safely with O_EXCL and good permissions.
+ This avoids a race condition in versions < 1.0.2, in which
+ the file was first opened and then had its interim permissions
+ set safely. We instead use open() to create the file with
+ the interim permissions required. (--- --- rw-).
+
+ For non-Unix platforms, if we are not worrying about
+ security issues, simple this simply behaves like fopen.
+*/
+static
+FILE* fopen_output_safely ( Char* name, const char* mode )
+{
+# if BZ_UNIX
+ FILE* fp;
+ IntNative fh;
+ fh = open(name, O_WRONLY|O_CREAT|O_EXCL, S_IWUSR|S_IRUSR);
+ if (fh == -1) return NULL;
+ fp = fdopen(fh, mode);
+ if (fp == NULL) close(fh);
+ return fp;
+# else
+ return fopen(name, mode);
+# endif
+}
+
+
+/*---------------------------------------------*/
+/*--
+ if in doubt, return True
+--*/
+static
+Bool notAStandardFile ( Char* name )
+{
+ IntNative i;
+ struct MY_STAT statBuf;
+
+ i = MY_LSTAT ( name, &statBuf );
+ if (i != 0) return True;
+ if (MY_S_ISREG(statBuf.st_mode)) return False;
+ return True;
+}
+
+
+/*---------------------------------------------*/
+/*--
+ rac 11/21/98 see if file has hard links to it
+--*/
+static
+Int32 countHardLinks ( Char* name )
+{
+ IntNative i;
+ struct MY_STAT statBuf;
+
+ i = MY_LSTAT ( name, &statBuf );
+ if (i != 0) return 0;
+ return (statBuf.st_nlink - 1);
+}
+
+
+/*---------------------------------------------*/
+/* Copy modification date, access date, permissions and owner from the
+ source to destination file. We have to copy this meta-info off
+ into fileMetaInfo before starting to compress / decompress it,
+ because doing it afterwards means we get the wrong access time.
+
+ To complicate matters, in compress() and decompress() below, the
+ sequence of tests preceding the call to saveInputFileMetaInfo()
+ involves calling fileExists(), which in turn establishes its result
+ by attempting to fopen() the file, and if successful, immediately
+ fclose()ing it again. So we have to assume that the fopen() call
+ does not cause the access time field to be updated.
+
+ Reading of the man page for stat() (man 2 stat) on RedHat 7.2 seems
+ to imply that merely doing open() will not affect the access time.
+ Therefore we merely need to hope that the C library only does
+ open() as a result of fopen(), and not any kind of read()-ahead
+ cleverness.
+
+ It sounds pretty fragile to me. Whether this carries across
+ robustly to arbitrary Unix-like platforms (or even works robustly
+ on this one, RedHat 7.2) is unknown to me. Nevertheless ...
+*/
+#if BZ_UNIX
+static
+struct MY_STAT fileMetaInfo;
+#endif
+
+static
+void saveInputFileMetaInfo ( Char *srcName )
+{
+# if BZ_UNIX
+ IntNative retVal;
+ /* Note use of stat here, not lstat. */
+ retVal = MY_STAT( srcName, &fileMetaInfo );
+ ERROR_IF_NOT_ZERO ( retVal );
+# endif
+}
+
+
+static
+void applySavedTimeInfoToOutputFile ( Char *dstName )
+{
+# if BZ_UNIX
+ IntNative retVal;
+ struct utimbuf uTimBuf;
+
+ uTimBuf.actime = fileMetaInfo.st_atime;
+ uTimBuf.modtime = fileMetaInfo.st_mtime;
+
+ retVal = utime ( dstName, &uTimBuf );
+ ERROR_IF_NOT_ZERO ( retVal );
+# endif
+}
+
+static
+void applySavedFileAttrToOutputFile ( IntNative fd )
+{
+# if BZ_UNIX
+ IntNative retVal;
+
+ retVal = fchmod ( fd, fileMetaInfo.st_mode );
+ ERROR_IF_NOT_ZERO ( retVal );
+
+ (void) fchown ( fd, fileMetaInfo.st_uid, fileMetaInfo.st_gid );
+ /* chown() will in many cases return with EPERM, which can
+ be safely ignored.
+ */
+# endif
+}
+
+
+/*---------------------------------------------*/
+static
+Bool containsDubiousChars ( Char* name )
+{
+# if BZ_UNIX
+ /* On unix, files can contain any characters and the file expansion
+ * is performed by the shell.
+ */
+ return False;
+# else /* ! BZ_UNIX */
+ /* On non-unix (Win* platforms), wildcard characters are not allowed in
+ * filenames.
+ */
+ for (; *name != '\0'; name++)
+ if (*name == '?' || *name == '*') return True;
+ return False;
+# endif /* BZ_UNIX */
+}
+
+
+/*---------------------------------------------*/
+#define BZ_N_SUFFIX_PAIRS 4
+
+const Char* zSuffix[BZ_N_SUFFIX_PAIRS]
+ = { ".bz2", ".bz", ".tbz2", ".tbz" };
+const Char* unzSuffix[BZ_N_SUFFIX_PAIRS]
+ = { "", "", ".tar", ".tar" };
+
+static
+Bool hasSuffix ( Char* s, const Char* suffix )
+{
+ Int32 ns = strlen(s);
+ Int32 nx = strlen(suffix);
+ if (ns < nx) return False;
+ if (strcmp(s + ns - nx, suffix) == 0) return True;
+ return False;
+}
+
+static
+Bool mapSuffix ( Char* name,
+ const Char* oldSuffix,
+ const Char* newSuffix )
+{
+ if (!hasSuffix(name,oldSuffix)) return False;
+ name[strlen(name)-strlen(oldSuffix)] = 0;
+ strcat ( name, newSuffix );
+ return True;
+}
+
+
+/*---------------------------------------------*/
+static
+void compress ( Char *name )
+{
+ FILE *inStr;
+ FILE *outStr;
+ Int32 n, i;
+ struct MY_STAT statBuf;
+
+ deleteOutputOnInterrupt = False;
+
+ if (name == NULL && srcMode != SM_I2O)
+ panic ( "compress: bad modes\n" );
+
+ switch (srcMode) {
+ case SM_I2O:
+ copyFileName ( inName, (Char*)"(stdin)" );
+ copyFileName ( outName, (Char*)"(stdout)" );
+ break;
+ case SM_F2F:
+ copyFileName ( inName, name );
+ copyFileName ( outName, name );
+ strcat ( outName, ".bz2" );
+ break;
+ case SM_F2O:
+ copyFileName ( inName, name );
+ copyFileName ( outName, (Char*)"(stdout)" );
+ break;
+ }
+
+ if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) {
+ if (noisy)
+ fprintf ( stderr, "%s: There are no files matching `%s'.\n",
+ progName, inName );
+ setExit(1);
+ return;
+ }
+ if ( srcMode != SM_I2O && !fileExists ( inName ) ) {
+ fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+ progName, inName, strerror(errno) );
+ setExit(1);
+ return;
+ }
+ for (i = 0; i < BZ_N_SUFFIX_PAIRS; i++) {
+ if (hasSuffix(inName, zSuffix[i])) {
+ if (noisy)
+ fprintf ( stderr,
+ "%s: Input file %s already has %s suffix.\n",
+ progName, inName, zSuffix[i] );
+ setExit(1);
+ return;
+ }
+ }
+ if ( srcMode == SM_F2F || srcMode == SM_F2O ) {
+ MY_STAT(inName, &statBuf);
+ if ( MY_S_ISDIR(statBuf.st_mode) ) {
+ fprintf( stderr,
+ "%s: Input file %s is a directory.\n",
+ progName,inName);
+ setExit(1);
+ return;
+ }
+ }
+ if ( srcMode == SM_F2F && !forceOverwrite && notAStandardFile ( inName )) {
+ if (noisy)
+ fprintf ( stderr, "%s: Input file %s is not a normal file.\n",
+ progName, inName );
+ setExit(1);
+ return;
+ }
+ if ( srcMode == SM_F2F && fileExists ( outName ) ) {
+ if (forceOverwrite) {
+ remove(outName);
+ } else {
+ fprintf ( stderr, "%s: Output file %s already exists.\n",
+ progName, outName );
+ setExit(1);
+ return;
+ }
+ }
+ if ( srcMode == SM_F2F && !forceOverwrite &&
+ (n=countHardLinks ( inName )) > 0) {
+ fprintf ( stderr, "%s: Input file %s has %d other link%s.\n",
+ progName, inName, n, n > 1 ? "s" : "" );
+ setExit(1);
+ return;
+ }
+
+ if ( srcMode == SM_F2F ) {
+ /* Save the file's meta-info before we open it. Doing it later
+ means we mess up the access times. */
+ saveInputFileMetaInfo ( inName );
+ }
+
+ switch ( srcMode ) {
+
+ case SM_I2O:
+ inStr = stdin;
+ outStr = stdout;
+ if ( isatty ( fileno ( stdout ) ) ) {
+ fprintf ( stderr,
+ "%s: I won't write compressed data to a terminal.\n",
+ progName );
+ fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+ progName, progName );
+ setExit(1);
+ return;
+ };
+ break;
+
+ case SM_F2O:
+ inStr = fopen ( inName, "rb" );
+ outStr = stdout;
+ if ( isatty ( fileno ( stdout ) ) ) {
+ fprintf ( stderr,
+ "%s: I won't write compressed data to a terminal.\n",
+ progName );
+ fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+ progName, progName );
+ if ( inStr != NULL ) fclose ( inStr );
+ setExit(1);
+ return;
+ };
+ if ( inStr == NULL ) {
+ fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+ progName, inName, strerror(errno) );
+ setExit(1);
+ return;
+ };
+ break;
+
+ case SM_F2F:
+ inStr = fopen ( inName, "rb" );
+ outStr = fopen_output_safely ( outName, "wb" );
+ if ( outStr == NULL) {
+ fprintf ( stderr, "%s: Can't create output file %s: %s.\n",
+ progName, outName, strerror(errno) );
+ if ( inStr != NULL ) fclose ( inStr );
+ setExit(1);
+ return;
+ }
+ if ( inStr == NULL ) {
+ fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+ progName, inName, strerror(errno) );
+ if ( outStr != NULL ) fclose ( outStr );
+ setExit(1);
+ return;
+ };
+ break;
+
+ default:
+ panic ( "compress: bad srcMode" );
+ break;
+ }
+
+ if (verbosity >= 1) {
+ fprintf ( stderr, " %s: ", inName );
+ pad ( inName );
+ fflush ( stderr );
+ }
+
+ /*--- Now the input and output handles are sane. Do the Biz. ---*/
+ outputHandleJustInCase = outStr;
+ deleteOutputOnInterrupt = True;
+ compressStream ( inStr, outStr );
+ outputHandleJustInCase = NULL;
+
+ /*--- If there was an I/O error, we won't get here. ---*/
+ if ( srcMode == SM_F2F ) {
+ applySavedTimeInfoToOutputFile ( outName );
+ deleteOutputOnInterrupt = False;
+ if ( !keepInputFiles ) {
+ IntNative retVal = remove ( inName );
+ ERROR_IF_NOT_ZERO ( retVal );
+ }
+ }
+
+ deleteOutputOnInterrupt = False;
+}
+
+
+/*---------------------------------------------*/
+static
+void uncompress ( Char *name )
+{
+ FILE *inStr;
+ FILE *outStr;
+ Int32 n, i;
+ Bool magicNumberOK;
+ Bool cantGuess;
+ struct MY_STAT statBuf;
+
+ deleteOutputOnInterrupt = False;
+
+ if (name == NULL && srcMode != SM_I2O)
+ panic ( "uncompress: bad modes\n" );
+
+ cantGuess = False;
+ switch (srcMode) {
+ case SM_I2O:
+ copyFileName ( inName, (Char*)"(stdin)" );
+ copyFileName ( outName, (Char*)"(stdout)" );
+ break;
+ case SM_F2F:
+ copyFileName ( inName, name );
+ copyFileName ( outName, name );
+ for (i = 0; i < BZ_N_SUFFIX_PAIRS; i++)
+ if (mapSuffix(outName,zSuffix[i],unzSuffix[i]))
+ goto zzz;
+ cantGuess = True;
+ strcat ( outName, ".out" );
+ break;
+ case SM_F2O:
+ copyFileName ( inName, name );
+ copyFileName ( outName, (Char*)"(stdout)" );
+ break;
+ }
+
+ zzz:
+ if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) {
+ if (noisy)
+ fprintf ( stderr, "%s: There are no files matching `%s'.\n",
+ progName, inName );
+ setExit(1);
+ return;
+ }
+ if ( srcMode != SM_I2O && !fileExists ( inName ) ) {
+ fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+ progName, inName, strerror(errno) );
+ setExit(1);
+ return;
+ }
+ if ( srcMode == SM_F2F || srcMode == SM_F2O ) {
+ MY_STAT(inName, &statBuf);
+ if ( MY_S_ISDIR(statBuf.st_mode) ) {
+ fprintf( stderr,
+ "%s: Input file %s is a directory.\n",
+ progName,inName);
+ setExit(1);
+ return;
+ }
+ }
+ if ( srcMode == SM_F2F && !forceOverwrite && notAStandardFile ( inName )) {
+ if (noisy)
+ fprintf ( stderr, "%s: Input file %s is not a normal file.\n",
+ progName, inName );
+ setExit(1);
+ return;
+ }
+ if ( /* srcMode == SM_F2F implied && */ cantGuess ) {
+ if (noisy)
+ fprintf ( stderr,
+ "%s: Can't guess original name for %s -- using %s\n",
+ progName, inName, outName );
+ /* just a warning, no return */
+ }
+ if ( srcMode == SM_F2F && fileExists ( outName ) ) {
+ if (forceOverwrite) {
+ remove(outName);
+ } else {
+ fprintf ( stderr, "%s: Output file %s already exists.\n",
+ progName, outName );
+ setExit(1);
+ return;
+ }
+ }
+ if ( srcMode == SM_F2F && !forceOverwrite &&
+ (n=countHardLinks ( inName ) ) > 0) {
+ fprintf ( stderr, "%s: Input file %s has %d other link%s.\n",
+ progName, inName, n, n > 1 ? "s" : "" );
+ setExit(1);
+ return;
+ }
+
+ if ( srcMode == SM_F2F ) {
+ /* Save the file's meta-info before we open it. Doing it later
+ means we mess up the access times. */
+ saveInputFileMetaInfo ( inName );
+ }
+
+ switch ( srcMode ) {
+
+ case SM_I2O:
+ inStr = stdin;
+ outStr = stdout;
+ if ( isatty ( fileno ( stdin ) ) ) {
+ fprintf ( stderr,
+ "%s: I won't read compressed data from a terminal.\n",
+ progName );
+ fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+ progName, progName );
+ setExit(1);
+ return;
+ };
+ break;
+
+ case SM_F2O:
+ inStr = fopen ( inName, "rb" );
+ outStr = stdout;
+ if ( inStr == NULL ) {
+ fprintf ( stderr, "%s: Can't open input file %s:%s.\n",
+ progName, inName, strerror(errno) );
+ if ( inStr != NULL ) fclose ( inStr );
+ setExit(1);
+ return;
+ };
+ break;
+
+ case SM_F2F:
+ inStr = fopen ( inName, "rb" );
+ outStr = fopen_output_safely ( outName, "wb" );
+ if ( outStr == NULL) {
+ fprintf ( stderr, "%s: Can't create output file %s: %s.\n",
+ progName, outName, strerror(errno) );
+ if ( inStr != NULL ) fclose ( inStr );
+ setExit(1);
+ return;
+ }
+ if ( inStr == NULL ) {
+ fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+ progName, inName, strerror(errno) );
+ if ( outStr != NULL ) fclose ( outStr );
+ setExit(1);
+ return;
+ };
+ break;
+
+ default:
+ panic ( "uncompress: bad srcMode" );
+ break;
+ }
+
+ if (verbosity >= 1) {
+ fprintf ( stderr, " %s: ", inName );
+ pad ( inName );
+ fflush ( stderr );
+ }
+
+ /*--- Now the input and output handles are sane. Do the Biz. ---*/
+ outputHandleJustInCase = outStr;
+ deleteOutputOnInterrupt = True;
+ magicNumberOK = uncompressStream ( inStr, outStr );
+ outputHandleJustInCase = NULL;
+
+ /*--- If there was an I/O error, we won't get here. ---*/
+ if ( magicNumberOK ) {
+ if ( srcMode == SM_F2F ) {
+ applySavedTimeInfoToOutputFile ( outName );
+ deleteOutputOnInterrupt = False;
+ if ( !keepInputFiles ) {
+ IntNative retVal = remove ( inName );
+ ERROR_IF_NOT_ZERO ( retVal );
+ }
+ }
+ } else {
+ unzFailsExist = True;
+ deleteOutputOnInterrupt = False;
+ if ( srcMode == SM_F2F ) {
+ IntNative retVal = remove ( outName );
+ ERROR_IF_NOT_ZERO ( retVal );
+ }
+ }
+ deleteOutputOnInterrupt = False;
+
+ if ( magicNumberOK ) {
+ if (verbosity >= 1)
+ fprintf ( stderr, "done\n" );
+ } else {
+ setExit(2);
+ if (verbosity >= 1)
+ fprintf ( stderr, "not a bzip2 file.\n" ); else
+ fprintf ( stderr,
+ "%s: %s is not a bzip2 file.\n",
+ progName, inName );
+ }
+
+}
+
+
+/*---------------------------------------------*/
+static
+void testf ( Char *name )
+{
+ FILE *inStr;
+ Bool allOK;
+ struct MY_STAT statBuf;
+
+ deleteOutputOnInterrupt = False;
+
+ if (name == NULL && srcMode != SM_I2O)
+ panic ( "testf: bad modes\n" );
+
+ copyFileName ( outName, (Char*)"(none)" );
+ switch (srcMode) {
+ case SM_I2O: copyFileName ( inName, (Char*)"(stdin)" ); break;
+ case SM_F2F: copyFileName ( inName, name ); break;
+ case SM_F2O: copyFileName ( inName, name ); break;
+ }
+
+ if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) {
+ if (noisy)
+ fprintf ( stderr, "%s: There are no files matching `%s'.\n",
+ progName, inName );
+ setExit(1);
+ return;
+ }
+ if ( srcMode != SM_I2O && !fileExists ( inName ) ) {
+ fprintf ( stderr, "%s: Can't open input %s: %s.\n",
+ progName, inName, strerror(errno) );
+ setExit(1);
+ return;
+ }
+ if ( srcMode != SM_I2O ) {
+ MY_STAT(inName, &statBuf);
+ if ( MY_S_ISDIR(statBuf.st_mode) ) {
+ fprintf( stderr,
+ "%s: Input file %s is a directory.\n",
+ progName,inName);
+ setExit(1);
+ return;
+ }
+ }
+
+ switch ( srcMode ) {
+
+ case SM_I2O:
+ if ( isatty ( fileno ( stdin ) ) ) {
+ fprintf ( stderr,
+ "%s: I won't read compressed data from a terminal.\n",
+ progName );
+ fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+ progName, progName );
+ setExit(1);
+ return;
+ };
+ inStr = stdin;
+ break;
+
+ case SM_F2O: case SM_F2F:
+ inStr = fopen ( inName, "rb" );
+ if ( inStr == NULL ) {
+ fprintf ( stderr, "%s: Can't open input file %s:%s.\n",
+ progName, inName, strerror(errno) );
+ setExit(1);
+ return;
+ };
+ break;
+
+ default:
+ panic ( "testf: bad srcMode" );
+ break;
+ }
+
+ if (verbosity >= 1) {
+ fprintf ( stderr, " %s: ", inName );
+ pad ( inName );
+ fflush ( stderr );
+ }
+
+ /*--- Now the input handle is sane. Do the Biz. ---*/
+ outputHandleJustInCase = NULL;
+ allOK = testStream ( inStr );
+
+ if (allOK && verbosity >= 1) fprintf ( stderr, "ok\n" );
+ if (!allOK) testFailsExist = True;
+}
+
+
+/*---------------------------------------------*/
+static
+void license ( void )
+{
+ fprintf ( stderr,
+
+ "bzip2, a block-sorting file compressor. "
+ "Version %s.\n"
+ " \n"
+ " Copyright (C) 1996-2010 by Julian Seward.\n"
+ " \n"
+ " This program is free software; you can redistribute it and/or modify\n"
+ " it under the terms set out in the LICENSE file, which is included\n"
+ " in the bzip2-1.0.6 source distribution.\n"
+ " \n"
+ " This program is distributed in the hope that it will be useful,\n"
+ " but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+ " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+ " LICENSE file for more details.\n"
+ " \n",
+ BZ2_bzlibVersion()
+ );
+}
+
+
+/*---------------------------------------------*/
+static
+void usage ( Char *fullProgName )
+{
+ fprintf (
+ stderr,
+ "bzip2, a block-sorting file compressor. "
+ "Version %s.\n"
+ "\n usage: %s [flags and input files in any order]\n"
+ "\n"
+ " -h --help print this message\n"
+ " -d --decompress force decompression\n"
+ " -z --compress force compression\n"
+ " -k --keep keep (don't delete) input files\n"
+ " -f --force overwrite existing output files\n"
+ " -t --test test compressed file integrity\n"
+ " -c --stdout output to standard out\n"
+ " -q --quiet suppress noncritical error messages\n"
+ " -v --verbose be verbose (a 2nd -v gives more)\n"
+ " -L --license display software version & license\n"
+ " -V --version display software version & license\n"
+ " -s --small use less memory (at most 2500k)\n"
+ " -1 .. -9 set block size to 100k .. 900k\n"
+ " --fast alias for -1\n"
+ " --best alias for -9\n"
+ "\n"
+ " If invoked as `bzip2', default action is to compress.\n"
+ " as `bunzip2', default action is to decompress.\n"
+ " as `bzcat', default action is to decompress to stdout.\n"
+ "\n"
+ " If no file names are given, bzip2 compresses or decompresses\n"
+ " from standard input to standard output. You can combine\n"
+ " short flags, so `-v -4' means the same as -v4 or -4v, &c.\n"
+# if BZ_UNIX
+ "\n"
+# endif
+ ,
+
+ BZ2_bzlibVersion(),
+ fullProgName
+ );
+}
+
+
+/*---------------------------------------------*/
+static
+void redundant ( Char* flag )
+{
+ fprintf (
+ stderr,
+ "%s: %s is redundant in versions 0.9.5 and above\n",
+ progName, flag );
+}
+
+
+/*---------------------------------------------*/
+/*--
+ All the garbage from here to main() is purely to
+ implement a linked list of command-line arguments,
+ into which main() copies argv[1 .. argc-1].
+
+ The purpose of this exercise is to facilitate
+ the expansion of wildcard characters * and ? in
+ filenames for OSs which don't know how to do it
+ themselves, like MSDOS, Windows 95 and NT.
+
+ The actual Dirty Work is done by the platform-
+ specific macro APPEND_FILESPEC.
+--*/
+
+typedef
+ struct zzzz {
+ Char *name;
+ struct zzzz *link;
+ }
+ Cell;
+
+
+/*---------------------------------------------*/
+static
+void *myMalloc ( Int32 n )
+{
+ void* p;
+
+ p = malloc ( (size_t)n );
+ if (p == NULL) outOfMemory ();
+ return p;
+}
+
+
+/*---------------------------------------------*/
+static
+Cell *mkCell ( void )
+{
+ Cell *c;
+
+ c = (Cell*) myMalloc ( sizeof ( Cell ) );
+ c->name = NULL;
+ c->link = NULL;
+ return c;
+}
+
+
+/*---------------------------------------------*/
+static
+Cell *snocString ( Cell *root, Char *name )
+{
+ if (root == NULL) {
+ Cell *tmp = mkCell();
+ tmp->name = (Char*) myMalloc ( 5 + strlen(name) );
+ strcpy ( tmp->name, name );
+ return tmp;
+ } else {
+ Cell *tmp = root;
+ while (tmp->link != NULL) tmp = tmp->link;
+ tmp->link = snocString ( tmp->link, name );
+ return root;
+ }
+}
+
+
+/*---------------------------------------------*/
+static
+void addFlagsFromEnvVar ( Cell** argList, Char* varName )
+{
+ Int32 i, j, k;
+ Char *envbase, *p;
+
+ envbase = getenv(varName);
+ if (envbase != NULL) {
+ p = envbase;
+ i = 0;
+ while (True) {
+ if (p[i] == 0) break;
+ p += i;
+ i = 0;
+ while (isspace((Int32)(p[0]))) p++;
+ while (p[i] != 0 && !isspace((Int32)(p[i]))) i++;
+ if (i > 0) {
+ k = i; if (k > FILE_NAME_LEN-10) k = FILE_NAME_LEN-10;
+ for (j = 0; j < k; j++) tmpName[j] = p[j];
+ tmpName[k] = 0;
+ APPEND_FLAG(*argList, tmpName);
+ }
+ }
+ }
+}
+
+
+/*---------------------------------------------*/
+#define ISFLAG(s) (strcmp(aa->name, (s))==0)
+
+IntNative main ( IntNative argc, Char *argv[] )
+{
+ Int32 i, j;
+ Char *tmp;
+ Cell *argList;
+ Cell *aa;
+ Bool decode;
+
+ /*-- Be really really really paranoid :-) --*/
+ if (sizeof(Int32) != 4 || sizeof(UInt32) != 4 ||
+ sizeof(Int16) != 2 || sizeof(UInt16) != 2 ||
+ sizeof(Char) != 1 || sizeof(UChar) != 1)
+ configError();
+
+ /*-- Initialise --*/
+ outputHandleJustInCase = NULL;
+ smallMode = False;
+ keepInputFiles = False;
+ forceOverwrite = False;
+ noisy = True;
+ verbosity = 0;
+ blockSize100k = 9;
+ testFailsExist = False;
+ unzFailsExist = False;
+ numFileNames = 0;
+ numFilesProcessed = 0;
+ workFactor = 30;
+ deleteOutputOnInterrupt = False;
+ exitValue = 0;
+ i = j = 0; /* avoid bogus warning from egcs-1.1.X */
+
+ /*-- Set up signal handlers for mem access errors --*/
+ signal (SIGSEGV, mySIGSEGVorSIGBUScatcher);
+# if BZ_UNIX
+# ifndef __DJGPP__
+ signal (SIGBUS, mySIGSEGVorSIGBUScatcher);
+# endif
+# endif
+
+ copyFileName ( inName, (Char*)"(none)" );
+ copyFileName ( outName, (Char*)"(none)" );
+
+ copyFileName ( progNameReally, argv[0] );
+ progName = &progNameReally[0];
+ for (tmp = &progNameReally[0]; *tmp != '\0'; tmp++)
+ if (*tmp == PATH_SEP) progName = tmp + 1;
+
+
+ /*-- Copy flags from env var BZIP2, and
+ expand filename wildcards in arg list.
+ --*/
+ argList = NULL;
+ addFlagsFromEnvVar ( &argList, (Char*)"BZIP2" );
+ addFlagsFromEnvVar ( &argList, (Char*)"BZIP" );
+ for (i = 1; i <= argc-1; i++)
+ APPEND_FILESPEC(argList, argv[i]);
+
+
+ /*-- Find the length of the longest filename --*/
+ longestFileName = 7;
+ numFileNames = 0;
+ decode = True;
+ for (aa = argList; aa != NULL; aa = aa->link) {
+ if (ISFLAG("--")) { decode = False; continue; }
+ if (aa->name[0] == '-' && decode) continue;
+ numFileNames++;
+ if (longestFileName < (Int32)strlen(aa->name) )
+ longestFileName = (Int32)strlen(aa->name);
+ }
+
+
+ /*-- Determine source modes; flag handling may change this too. --*/
+ if (numFileNames == 0)
+ srcMode = SM_I2O; else srcMode = SM_F2F;
+
+
+ /*-- Determine what to do (compress/uncompress/test/cat). --*/
+ /*-- Note that subsequent flag handling may change this. --*/
+ opMode = OM_Z;
+
+ if ( (strstr ( progName, "unzip" ) != 0) ||
+ (strstr ( progName, "UNZIP" ) != 0) )
+ opMode = OM_UNZ;
+
+ if ( (strstr ( progName, "z2cat" ) != 0) ||
+ (strstr ( progName, "Z2CAT" ) != 0) ||
+ (strstr ( progName, "zcat" ) != 0) ||
+ (strstr ( progName, "ZCAT" ) != 0) ) {
+ opMode = OM_UNZ;
+ srcMode = (numFileNames == 0) ? SM_I2O : SM_F2O;
+ }
+
+
+ /*-- Look at the flags. --*/
+ for (aa = argList; aa != NULL; aa = aa->link) {
+ if (ISFLAG("--")) break;
+ if (aa->name[0] == '-' && aa->name[1] != '-') {
+ for (j = 1; aa->name[j] != '\0'; j++) {
+ switch (aa->name[j]) {
+ case 'c': srcMode = SM_F2O; break;
+ case 'd': opMode = OM_UNZ; break;
+ case 'z': opMode = OM_Z; break;
+ case 'f': forceOverwrite = True; break;
+ case 't': opMode = OM_TEST; break;
+ case 'k': keepInputFiles = True; break;
+ case 's': smallMode = True; break;
+ case 'q': noisy = False; break;
+ case '1': blockSize100k = 1; break;
+ case '2': blockSize100k = 2; break;
+ case '3': blockSize100k = 3; break;
+ case '4': blockSize100k = 4; break;
+ case '5': blockSize100k = 5; break;
+ case '6': blockSize100k = 6; break;
+ case '7': blockSize100k = 7; break;
+ case '8': blockSize100k = 8; break;
+ case '9': blockSize100k = 9; break;
+ case 'V':
+ case 'L': license(); break;
+ case 'v': verbosity++; break;
+ case 'h': usage ( progName );
+ exit ( 0 );
+ break;
+ default: fprintf ( stderr, "%s: Bad flag `%s'\n",
+ progName, aa->name );
+ usage ( progName );
+ exit ( 1 );
+ break;
+ }
+ }
+ }
+ }
+
+ /*-- And again ... --*/
+ for (aa = argList; aa != NULL; aa = aa->link) {
+ if (ISFLAG("--")) break;
+ if (ISFLAG("--stdout")) srcMode = SM_F2O; else
+ if (ISFLAG("--decompress")) opMode = OM_UNZ; else
+ if (ISFLAG("--compress")) opMode = OM_Z; else
+ if (ISFLAG("--force")) forceOverwrite = True; else
+ if (ISFLAG("--test")) opMode = OM_TEST; else
+ if (ISFLAG("--keep")) keepInputFiles = True; else
+ if (ISFLAG("--small")) smallMode = True; else
+ if (ISFLAG("--quiet")) noisy = False; else
+ if (ISFLAG("--version")) license(); else
+ if (ISFLAG("--license")) license(); else
+ if (ISFLAG("--exponential")) workFactor = 1; else
+ if (ISFLAG("--repetitive-best")) redundant(aa->name); else
+ if (ISFLAG("--repetitive-fast")) redundant(aa->name); else
+ if (ISFLAG("--fast")) blockSize100k = 1; else
+ if (ISFLAG("--best")) blockSize100k = 9; else
+ if (ISFLAG("--verbose")) verbosity++; else
+ if (ISFLAG("--help")) { usage ( progName ); exit ( 0 ); }
+ else
+ if (strncmp ( aa->name, "--", 2) == 0) {
+ fprintf ( stderr, "%s: Bad flag `%s'\n", progName, aa->name );
+ usage ( progName );
+ exit ( 1 );
+ }
+ }
+
+ if (verbosity > 4) verbosity = 4;
+ if (opMode == OM_Z && smallMode && blockSize100k > 2)
+ blockSize100k = 2;
+
+ if (opMode == OM_TEST && srcMode == SM_F2O) {
+ fprintf ( stderr, "%s: -c and -t cannot be used together.\n",
+ progName );
+ exit ( 1 );
+ }
+
+ if (srcMode == SM_F2O && numFileNames == 0)
+ srcMode = SM_I2O;
+
+ if (opMode != OM_Z) blockSize100k = 0;
+
+ if (srcMode == SM_F2F) {
+ signal (SIGINT, mySignalCatcher);
+ signal (SIGTERM, mySignalCatcher);
+# if BZ_UNIX
+ signal (SIGHUP, mySignalCatcher);
+# endif
+ }
+
+ if (opMode == OM_Z) {
+ if (srcMode == SM_I2O) {
+ compress ( NULL );
+ } else {
+ decode = True;
+ for (aa = argList; aa != NULL; aa = aa->link) {
+ if (ISFLAG("--")) { decode = False; continue; }
+ if (aa->name[0] == '-' && decode) continue;
+ numFilesProcessed++;
+ compress ( aa->name );
+ }
+ }
+ }
+ else
+
+ if (opMode == OM_UNZ) {
+ unzFailsExist = False;
+ if (srcMode == SM_I2O) {
+ uncompress ( NULL );
+ } else {
+ decode = True;
+ for (aa = argList; aa != NULL; aa = aa->link) {
+ if (ISFLAG("--")) { decode = False; continue; }
+ if (aa->name[0] == '-' && decode) continue;
+ numFilesProcessed++;
+ uncompress ( aa->name );
+ }
+ }
+ if (unzFailsExist) {
+ setExit(2);
+ exit(exitValue);
+ }
+ }
+
+ else {
+ testFailsExist = False;
+ if (srcMode == SM_I2O) {
+ testf ( NULL );
+ } else {
+ decode = True;
+ for (aa = argList; aa != NULL; aa = aa->link) {
+ if (ISFLAG("--")) { decode = False; continue; }
+ if (aa->name[0] == '-' && decode) continue;
+ numFilesProcessed++;
+ testf ( aa->name );
+ }
+ }
+ if (testFailsExist && noisy) {
+ fprintf ( stderr,
+ "\n"
+ "You can use the `bzip2recover' program to attempt to recover\n"
+ "data from undamaged sections of corrupted files.\n\n"
+ );
+ setExit(2);
+ exit(exitValue);
+ }
+ }
+
+ /* Free the argument list memory to mollify leak detectors
+ (eg) Purify, Checker. Serves no other useful purpose.
+ */
+ aa = argList;
+ while (aa != NULL) {
+ Cell* aa2 = aa->link;
+ if (aa->name != NULL) free(aa->name);
+ free(aa);
+ aa = aa2;
+ }
+
+ return exitValue;
+}
+
+
+/*-----------------------------------------------------------*/
+/*--- end bzip2.c ---*/
+/*-----------------------------------------------------------*/
diff --git a/contrib/bzip2/bzip2recover.c b/contrib/bzip2/bzip2recover.c
new file mode 100644
index 000000000000..f9de0496abf1
--- /dev/null
+++ b/contrib/bzip2/bzip2recover.c
@@ -0,0 +1,514 @@
+/*-----------------------------------------------------------*/
+/*--- Block recoverer program for bzip2 ---*/
+/*--- bzip2recover.c ---*/
+/*-----------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+ This file is part of bzip2/libbzip2, a program and library for
+ lossless, block-sorting data compression.
+
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+ Please read the WARNING, DISCLAIMER and PATENTS sections in the
+ README file.
+
+ This program is released under the terms of the license contained
+ in the file LICENSE.
+ ------------------------------------------------------------------ */
+
+/* This program is a complete hack and should be rewritten properly.
+ It isn't very complicated. */
+
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+/* This program records bit locations in the file to be recovered.
+ That means that if 64-bit ints are not supported, we will not
+ be able to recover .bz2 files over 512MB (2^32 bits) long.
+ On GNU supported platforms, we take advantage of the 64-bit
+ int support to circumvent this problem. Ditto MSVC.
+
+ This change occurred in version 1.0.2; all prior versions have
+ the 512MB limitation.
+*/
+#ifdef __GNUC__
+ typedef unsigned long long int MaybeUInt64;
+# define MaybeUInt64_FMT "%Lu"
+#else
+#ifdef _MSC_VER
+ typedef unsigned __int64 MaybeUInt64;
+# define MaybeUInt64_FMT "%I64u"
+#else
+ typedef unsigned int MaybeUInt64;
+# define MaybeUInt64_FMT "%u"
+#endif
+#endif
+
+typedef unsigned int UInt32;
+typedef int Int32;
+typedef unsigned char UChar;
+typedef char Char;
+typedef unsigned char Bool;
+#define True ((Bool)1)
+#define False ((Bool)0)
+
+
+#define BZ_MAX_FILENAME 2000
+
+Char inFileName[BZ_MAX_FILENAME];
+Char outFileName[BZ_MAX_FILENAME];
+Char progName[BZ_MAX_FILENAME];
+
+MaybeUInt64 bytesOut = 0;
+MaybeUInt64 bytesIn = 0;
+
+
+/*---------------------------------------------------*/
+/*--- Header bytes ---*/
+/*---------------------------------------------------*/
+
+#define BZ_HDR_B 0x42 /* 'B' */
+#define BZ_HDR_Z 0x5a /* 'Z' */
+#define BZ_HDR_h 0x68 /* 'h' */
+#define BZ_HDR_0 0x30 /* '0' */
+
+
+/*---------------------------------------------------*/
+/*--- I/O errors ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------*/
+static void readError ( void )
+{
+ fprintf ( stderr,
+ "%s: I/O error reading `%s', possible reason follows.\n",
+ progName, inFileName );
+ perror ( progName );
+ fprintf ( stderr, "%s: warning: output file(s) may be incomplete.\n",
+ progName );
+ exit ( 1 );
+}
+
+
+/*---------------------------------------------*/
+static void writeError ( void )
+{
+ fprintf ( stderr,
+ "%s: I/O error reading `%s', possible reason follows.\n",
+ progName, inFileName );
+ perror ( progName );
+ fprintf ( stderr, "%s: warning: output file(s) may be incomplete.\n",
+ progName );
+ exit ( 1 );
+}
+
+
+/*---------------------------------------------*/
+static void mallocFail ( Int32 n )
+{
+ fprintf ( stderr,
+ "%s: malloc failed on request for %d bytes.\n",
+ progName, n );
+ fprintf ( stderr, "%s: warning: output file(s) may be incomplete.\n",
+ progName );
+ exit ( 1 );
+}
+
+
+/*---------------------------------------------*/
+static void tooManyBlocks ( Int32 max_handled_blocks )
+{
+ fprintf ( stderr,
+ "%s: `%s' appears to contain more than %d blocks\n",
+ progName, inFileName, max_handled_blocks );
+ fprintf ( stderr,
+ "%s: and cannot be handled. To fix, increase\n",
+ progName );
+ fprintf ( stderr,
+ "%s: BZ_MAX_HANDLED_BLOCKS in bzip2recover.c, and recompile.\n",
+ progName );
+ exit ( 1 );
+}
+
+
+
+/*---------------------------------------------------*/
+/*--- Bit stream I/O ---*/
+/*---------------------------------------------------*/
+
+typedef
+ struct {
+ FILE* handle;
+ Int32 buffer;
+ Int32 buffLive;
+ Char mode;
+ }
+ BitStream;
+
+
+/*---------------------------------------------*/
+static BitStream* bsOpenReadStream ( FILE* stream )
+{
+ BitStream *bs = malloc ( sizeof(BitStream) );
+ if (bs == NULL) mallocFail ( sizeof(BitStream) );
+ bs->handle = stream;
+ bs->buffer = 0;
+ bs->buffLive = 0;
+ bs->mode = 'r';
+ return bs;
+}
+
+
+/*---------------------------------------------*/
+static BitStream* bsOpenWriteStream ( FILE* stream )
+{
+ BitStream *bs = malloc ( sizeof(BitStream) );
+ if (bs == NULL) mallocFail ( sizeof(BitStream) );
+ bs->handle = stream;
+ bs->buffer = 0;
+ bs->buffLive = 0;
+ bs->mode = 'w';
+ return bs;
+}
+
+
+/*---------------------------------------------*/
+static void bsPutBit ( BitStream* bs, Int32 bit )
+{
+ if (bs->buffLive == 8) {
+ Int32 retVal = putc ( (UChar) bs->buffer, bs->handle );
+ if (retVal == EOF) writeError();
+ bytesOut++;
+ bs->buffLive = 1;
+ bs->buffer = bit & 0x1;
+ } else {
+ bs->buffer = ( (bs->buffer << 1) | (bit & 0x1) );
+ bs->buffLive++;
+ };
+}
+
+
+/*---------------------------------------------*/
+/*--
+ Returns 0 or 1, or 2 to indicate EOF.
+--*/
+static Int32 bsGetBit ( BitStream* bs )
+{
+ if (bs->buffLive > 0) {
+ bs->buffLive --;
+ return ( ((bs->buffer) >> (bs->buffLive)) & 0x1 );
+ } else {
+ Int32 retVal = getc ( bs->handle );
+ if ( retVal == EOF ) {
+ if (errno != 0) readError();
+ return 2;
+ }
+ bs->buffLive = 7;
+ bs->buffer = retVal;
+ return ( ((bs->buffer) >> 7) & 0x1 );
+ }
+}
+
+
+/*---------------------------------------------*/
+static void bsClose ( BitStream* bs )
+{
+ Int32 retVal;
+
+ if ( bs->mode == 'w' ) {
+ while ( bs->buffLive < 8 ) {
+ bs->buffLive++;
+ bs->buffer <<= 1;
+ };
+ retVal = putc ( (UChar) (bs->buffer), bs->handle );
+ if (retVal == EOF) writeError();
+ bytesOut++;
+ retVal = fflush ( bs->handle );
+ if (retVal == EOF) writeError();
+ }
+ retVal = fclose ( bs->handle );
+ if (retVal == EOF) {
+ if (bs->mode == 'w') writeError(); else readError();
+ }
+ free ( bs );
+}
+
+
+/*---------------------------------------------*/
+static void bsPutUChar ( BitStream* bs, UChar c )
+{
+ Int32 i;
+ for (i = 7; i >= 0; i--)
+ bsPutBit ( bs, (((UInt32) c) >> i) & 0x1 );
+}
+
+
+/*---------------------------------------------*/
+static void bsPutUInt32 ( BitStream* bs, UInt32 c )
+{
+ Int32 i;
+
+ for (i = 31; i >= 0; i--)
+ bsPutBit ( bs, (c >> i) & 0x1 );
+}
+
+
+/*---------------------------------------------*/
+static Bool endsInBz2 ( Char* name )
+{
+ Int32 n = strlen ( name );
+ if (n <= 4) return False;
+ return
+ (name[n-4] == '.' &&
+ name[n-3] == 'b' &&
+ name[n-2] == 'z' &&
+ name[n-1] == '2');
+}
+
+
+/*---------------------------------------------------*/
+/*--- ---*/
+/*---------------------------------------------------*/
+
+/* This logic isn't really right when it comes to Cygwin. */
+#ifdef _WIN32
+# define BZ_SPLIT_SYM '\\' /* path splitter on Windows platform */
+#else
+# define BZ_SPLIT_SYM '/' /* path splitter on Unix platform */
+#endif
+
+#define BLOCK_HEADER_HI 0x00003141UL
+#define BLOCK_HEADER_LO 0x59265359UL
+
+#define BLOCK_ENDMARK_HI 0x00001772UL
+#define BLOCK_ENDMARK_LO 0x45385090UL
+
+/* Increase if necessary. However, a .bz2 file with > 50000 blocks
+ would have an uncompressed size of at least 40GB, so the chances
+ are low you'll need to up this.
+*/
+#define BZ_MAX_HANDLED_BLOCKS 50000
+
+MaybeUInt64 bStart [BZ_MAX_HANDLED_BLOCKS];
+MaybeUInt64 bEnd [BZ_MAX_HANDLED_BLOCKS];
+MaybeUInt64 rbStart[BZ_MAX_HANDLED_BLOCKS];
+MaybeUInt64 rbEnd [BZ_MAX_HANDLED_BLOCKS];
+
+Int32 main ( Int32 argc, Char** argv )
+{
+ FILE* inFile;
+ FILE* outFile;
+ BitStream* bsIn, *bsWr;
+ Int32 b, wrBlock, currBlock, rbCtr;
+ MaybeUInt64 bitsRead;
+
+ UInt32 buffHi, buffLo, blockCRC;
+ Char* p;
+
+ strcpy ( progName, argv[0] );
+ inFileName[0] = outFileName[0] = 0;
+
+ fprintf ( stderr,
+ "bzip2recover 1.0.6: extracts blocks from damaged .bz2 files.\n" );
+
+ if (argc != 2) {
+ fprintf ( stderr, "%s: usage is `%s damaged_file_name'.\n",
+ progName, progName );
+ switch (sizeof(MaybeUInt64)) {
+ case 8:
+ fprintf(stderr,
+ "\trestrictions on size of recovered file: None\n");
+ break;
+ case 4:
+ fprintf(stderr,
+ "\trestrictions on size of recovered file: 512 MB\n");
+ fprintf(stderr,
+ "\tto circumvent, recompile with MaybeUInt64 as an\n"
+ "\tunsigned 64-bit int.\n");
+ break;
+ default:
+ fprintf(stderr,
+ "\tsizeof(MaybeUInt64) is not 4 or 8 -- "
+ "configuration error.\n");
+ break;
+ }
+ exit(1);
+ }
+
+ if (strlen(argv[1]) >= BZ_MAX_FILENAME-20) {
+ fprintf ( stderr,
+ "%s: supplied filename is suspiciously (>= %d chars) long. Bye!\n",
+ progName, (int)strlen(argv[1]) );
+ exit(1);
+ }
+
+ strcpy ( inFileName, argv[1] );
+
+ inFile = fopen ( inFileName, "rb" );
+ if (inFile == NULL) {
+ fprintf ( stderr, "%s: can't read `%s'\n", progName, inFileName );
+ exit(1);
+ }
+
+ bsIn = bsOpenReadStream ( inFile );
+ fprintf ( stderr, "%s: searching for block boundaries ...\n", progName );
+
+ bitsRead = 0;
+ buffHi = buffLo = 0;
+ currBlock = 0;
+ bStart[currBlock] = 0;
+
+ rbCtr = 0;
+
+ while (True) {
+ b = bsGetBit ( bsIn );
+ bitsRead++;
+ if (b == 2) {
+ if (bitsRead >= bStart[currBlock] &&
+ (bitsRead - bStart[currBlock]) >= 40) {
+ bEnd[currBlock] = bitsRead-1;
+ if (currBlock > 0)
+ fprintf ( stderr, " block %d runs from " MaybeUInt64_FMT
+ " to " MaybeUInt64_FMT " (incomplete)\n",
+ currBlock, bStart[currBlock], bEnd[currBlock] );
+ } else
+ currBlock--;
+ break;
+ }
+ buffHi = (buffHi << 1) | (buffLo >> 31);
+ buffLo = (buffLo << 1) | (b & 1);
+ if ( ( (buffHi & 0x0000ffff) == BLOCK_HEADER_HI
+ && buffLo == BLOCK_HEADER_LO)
+ ||
+ ( (buffHi & 0x0000ffff) == BLOCK_ENDMARK_HI
+ && buffLo == BLOCK_ENDMARK_LO)
+ ) {
+ if (bitsRead > 49) {
+ bEnd[currBlock] = bitsRead-49;
+ } else {
+ bEnd[currBlock] = 0;
+ }
+ if (currBlock > 0 &&
+ (bEnd[currBlock] - bStart[currBlock]) >= 130) {
+ fprintf ( stderr, " block %d runs from " MaybeUInt64_FMT
+ " to " MaybeUInt64_FMT "\n",
+ rbCtr+1, bStart[currBlock], bEnd[currBlock] );
+ rbStart[rbCtr] = bStart[currBlock];
+ rbEnd[rbCtr] = bEnd[currBlock];
+ rbCtr++;
+ }
+ if (currBlock >= BZ_MAX_HANDLED_BLOCKS)
+ tooManyBlocks(BZ_MAX_HANDLED_BLOCKS);
+ currBlock++;
+
+ bStart[currBlock] = bitsRead;
+ }
+ }
+
+ bsClose ( bsIn );
+
+ /*-- identified blocks run from 1 to rbCtr inclusive. --*/
+
+ if (rbCtr < 1) {
+ fprintf ( stderr,
+ "%s: sorry, I couldn't find any block boundaries.\n",
+ progName );
+ exit(1);
+ };
+
+ fprintf ( stderr, "%s: splitting into blocks\n", progName );
+
+ inFile = fopen ( inFileName, "rb" );
+ if (inFile == NULL) {
+ fprintf ( stderr, "%s: can't open `%s'\n", progName, inFileName );
+ exit(1);
+ }
+ bsIn = bsOpenReadStream ( inFile );
+
+ /*-- placate gcc's dataflow analyser --*/
+ blockCRC = 0; bsWr = 0;
+
+ bitsRead = 0;
+ outFile = NULL;
+ wrBlock = 0;
+ while (True) {
+ b = bsGetBit(bsIn);
+ if (b == 2) break;
+ buffHi = (buffHi << 1) | (buffLo >> 31);
+ buffLo = (buffLo << 1) | (b & 1);
+ if (bitsRead == 47+rbStart[wrBlock])
+ blockCRC = (buffHi << 16) | (buffLo >> 16);
+
+ if (outFile != NULL && bitsRead >= rbStart[wrBlock]
+ && bitsRead <= rbEnd[wrBlock]) {
+ bsPutBit ( bsWr, b );
+ }
+
+ bitsRead++;
+
+ if (bitsRead == rbEnd[wrBlock]+1) {
+ if (outFile != NULL) {
+ bsPutUChar ( bsWr, 0x17 ); bsPutUChar ( bsWr, 0x72 );
+ bsPutUChar ( bsWr, 0x45 ); bsPutUChar ( bsWr, 0x38 );
+ bsPutUChar ( bsWr, 0x50 ); bsPutUChar ( bsWr, 0x90 );
+ bsPutUInt32 ( bsWr, blockCRC );
+ bsClose ( bsWr );
+ }
+ if (wrBlock >= rbCtr) break;
+ wrBlock++;
+ } else
+ if (bitsRead == rbStart[wrBlock]) {
+ /* Create the output file name, correctly handling leading paths.
+ (31.10.2001 by Sergey E. Kusikov) */
+ Char* split;
+ Int32 ofs, k;
+ for (k = 0; k < BZ_MAX_FILENAME; k++)
+ outFileName[k] = 0;
+ strcpy (outFileName, inFileName);
+ split = strrchr (outFileName, BZ_SPLIT_SYM);
+ if (split == NULL) {
+ split = outFileName;
+ } else {
+ ++split;
+ }
+ /* Now split points to the start of the basename. */
+ ofs = split - outFileName;
+ sprintf (split, "rec%5d", wrBlock+1);
+ for (p = split; *p != 0; p++) if (*p == ' ') *p = '0';
+ strcat (outFileName, inFileName + ofs);
+
+ if ( !endsInBz2(outFileName)) strcat ( outFileName, ".bz2" );
+
+ fprintf ( stderr, " writing block %d to `%s' ...\n",
+ wrBlock+1, outFileName );
+
+ outFile = fopen ( outFileName, "wb" );
+ if (outFile == NULL) {
+ fprintf ( stderr, "%s: can't write `%s'\n",
+ progName, outFileName );
+ exit(1);
+ }
+ bsWr = bsOpenWriteStream ( outFile );
+ bsPutUChar ( bsWr, BZ_HDR_B );
+ bsPutUChar ( bsWr, BZ_HDR_Z );
+ bsPutUChar ( bsWr, BZ_HDR_h );
+ bsPutUChar ( bsWr, BZ_HDR_0 + 9 );
+ bsPutUChar ( bsWr, 0x31 ); bsPutUChar ( bsWr, 0x41 );
+ bsPutUChar ( bsWr, 0x59 ); bsPutUChar ( bsWr, 0x26 );
+ bsPutUChar ( bsWr, 0x53 ); bsPutUChar ( bsWr, 0x59 );
+ }
+ }
+
+ fprintf ( stderr, "%s: finished\n", progName );
+ return 0;
+}
+
+
+
+/*-----------------------------------------------------------*/
+/*--- end bzip2recover.c ---*/
+/*-----------------------------------------------------------*/
diff --git a/contrib/bzip2/bzlib.c b/contrib/bzip2/bzlib.c
new file mode 100644
index 000000000000..c02d076ccdfe
--- /dev/null
+++ b/contrib/bzip2/bzlib.c
@@ -0,0 +1,1581 @@
+
+/*-------------------------------------------------------------*/
+/*--- Library top-level functions. ---*/
+/*--- bzlib.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+ This file is part of bzip2/libbzip2, a program and library for
+ lossless, block-sorting data compression.
+
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+ Please read the WARNING, DISCLAIMER and PATENTS sections in the
+ README file.
+
+ This program is released under the terms of the license contained
+ in the file LICENSE.
+ ------------------------------------------------------------------ */
+
+/* CHANGES
+ 0.9.0 -- original version.
+ 0.9.0a/b -- no changes in this file.
+ 0.9.0c -- made zero-length BZ_FLUSH work correctly in bzCompress().
+ fixed bzWrite/bzRead to ignore zero-length requests.
+ fixed bzread to correctly handle read requests after EOF.
+ wrong parameter order in call to bzDecompressInit in
+ bzBuffToBuffDecompress. Fixed.
+*/
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include "bzlib_private.h"
+
+#ifndef BZ_NO_COMPRESS
+
+/*---------------------------------------------------*/
+/*--- Compression stuff ---*/
+/*---------------------------------------------------*/
+
+
+/*---------------------------------------------------*/
+#ifndef BZ_NO_STDIO
+void BZ2_bz__AssertH__fail ( int errcode )
+{
+ fprintf(stderr,
+ "\n\nbzip2/libbzip2: internal error number %d.\n"
+ "This is a bug in bzip2/libbzip2, %s.\n"
+ "Please report it to me at: jseward@bzip.org. If this happened\n"
+ "when you were using some program which uses libbzip2 as a\n"
+ "component, you should also report this bug to the author(s)\n"
+ "of that program. Please make an effort to report this bug;\n"
+ "timely and accurate bug reports eventually lead to higher\n"
+ "quality software. Thanks. Julian Seward, 10 December 2007.\n\n",
+ errcode,
+ BZ2_bzlibVersion()
+ );
+
+ if (errcode == 1007) {
+ fprintf(stderr,
+ "\n*** A special note about internal error number 1007 ***\n"
+ "\n"
+ "Experience suggests that a common cause of i.e. 1007\n"
+ "is unreliable memory or other hardware. The 1007 assertion\n"
+ "just happens to cross-check the results of huge numbers of\n"
+ "memory reads/writes, and so acts (unintendedly) as a stress\n"
+ "test of your memory system.\n"
+ "\n"
+ "I suggest the following: try compressing the file again,\n"
+ "possibly monitoring progress in detail with the -vv flag.\n"
+ "\n"
+ "* If the error cannot be reproduced, and/or happens at different\n"
+ " points in compression, you may have a flaky memory system.\n"
+ " Try a memory-test program. I have used Memtest86\n"
+ " (www.memtest86.com). At the time of writing it is free (GPLd).\n"
+ " Memtest86 tests memory much more thorougly than your BIOSs\n"
+ " power-on test, and may find failures that the BIOS doesn't.\n"
+ "\n"
+ "* If the error can be repeatably reproduced, this is a bug in\n"
+ " bzip2, and I would very much like to hear about it. Please\n"
+ " let me know, and, ideally, save a copy of the file causing the\n"
+ " problem -- without which I will be unable to investigate it.\n"
+ "\n"
+ );
+ }
+
+ exit(3);
+}
+#endif
+
+#endif /* BZ_NO_COMPRESS */
+
+/*---------------------------------------------------*/
+static
+int bz_config_ok ( void )
+{
+ if (sizeof(int) != 4) return 0;
+ if (sizeof(short) != 2) return 0;
+ if (sizeof(char) != 1) return 0;
+ return 1;
+}
+
+
+/*---------------------------------------------------*/
+static
+void* default_bzalloc ( void* opaque, Int32 items, Int32 size )
+{
+ void* v = malloc ( items * size );
+ return v;
+}
+
+static
+void default_bzfree ( void* opaque, void* addr )
+{
+ if (addr != NULL) free ( addr );
+}
+
+#ifndef BZ_NO_COMPRESS
+
+/*---------------------------------------------------*/
+static
+void prepare_new_block ( EState* s )
+{
+ Int32 i;
+ s->nblock = 0;
+ s->numZ = 0;
+ s->state_out_pos = 0;
+ BZ_INITIALISE_CRC ( s->blockCRC );
+ for (i = 0; i < 256; i++) s->inUse[i] = False;
+ s->blockNo++;
+}
+
+
+/*---------------------------------------------------*/
+static
+void init_RL ( EState* s )
+{
+ s->state_in_ch = 256;
+ s->state_in_len = 0;
+}
+
+
+static
+Bool isempty_RL ( EState* s )
+{
+ if (s->state_in_ch < 256 && s->state_in_len > 0)
+ return False; else
+ return True;
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzCompressInit)
+ ( bz_stream* strm,
+ int blockSize100k,
+ int verbosity,
+ int workFactor )
+{
+ Int32 n;
+ EState* s;
+
+ if (!bz_config_ok()) return BZ_CONFIG_ERROR;
+
+ if (strm == NULL ||
+ blockSize100k < 1 || blockSize100k > 9 ||
+ workFactor < 0 || workFactor > 250)
+ return BZ_PARAM_ERROR;
+
+ if (workFactor == 0) workFactor = 30;
+ if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc;
+ if (strm->bzfree == NULL) strm->bzfree = default_bzfree;
+
+ s = BZALLOC( sizeof(EState) );
+ if (s == NULL) return BZ_MEM_ERROR;
+ s->strm = strm;
+
+ s->arr1 = NULL;
+ s->arr2 = NULL;
+ s->ftab = NULL;
+
+ n = 100000 * blockSize100k;
+ s->arr1 = BZALLOC( n * sizeof(UInt32) );
+ s->arr2 = BZALLOC( (n+BZ_N_OVERSHOOT) * sizeof(UInt32) );
+ s->ftab = BZALLOC( 65537 * sizeof(UInt32) );
+
+ if (s->arr1 == NULL || s->arr2 == NULL || s->ftab == NULL) {
+ if (s->arr1 != NULL) BZFREE(s->arr1);
+ if (s->arr2 != NULL) BZFREE(s->arr2);
+ if (s->ftab != NULL) BZFREE(s->ftab);
+ if (s != NULL) BZFREE(s);
+ return BZ_MEM_ERROR;
+ }
+
+ s->blockNo = 0;
+ s->state = BZ_S_INPUT;
+ s->mode = BZ_M_RUNNING;
+ s->combinedCRC = 0;
+ s->blockSize100k = blockSize100k;
+ s->nblockMAX = 100000 * blockSize100k - 19;
+ s->verbosity = verbosity;
+ s->workFactor = workFactor;
+
+ s->block = (UChar*)s->arr2;
+ s->mtfv = (UInt16*)s->arr1;
+ s->zbits = NULL;
+ s->ptr = (UInt32*)s->arr1;
+
+ strm->state = s;
+ strm->total_in_lo32 = 0;
+ strm->total_in_hi32 = 0;
+ strm->total_out_lo32 = 0;
+ strm->total_out_hi32 = 0;
+ init_RL ( s );
+ prepare_new_block ( s );
+ return BZ_OK;
+}
+
+
+/*---------------------------------------------------*/
+static
+void add_pair_to_block ( EState* s )
+{
+ Int32 i;
+ UChar ch = (UChar)(s->state_in_ch);
+ for (i = 0; i < s->state_in_len; i++) {
+ BZ_UPDATE_CRC( s->blockCRC, ch );
+ }
+ s->inUse[s->state_in_ch] = True;
+ switch (s->state_in_len) {
+ case 1:
+ s->block[s->nblock] = (UChar)ch; s->nblock++;
+ break;
+ case 2:
+ s->block[s->nblock] = (UChar)ch; s->nblock++;
+ s->block[s->nblock] = (UChar)ch; s->nblock++;
+ break;
+ case 3:
+ s->block[s->nblock] = (UChar)ch; s->nblock++;
+ s->block[s->nblock] = (UChar)ch; s->nblock++;
+ s->block[s->nblock] = (UChar)ch; s->nblock++;
+ break;
+ default:
+ s->inUse[s->state_in_len-4] = True;
+ s->block[s->nblock] = (UChar)ch; s->nblock++;
+ s->block[s->nblock] = (UChar)ch; s->nblock++;
+ s->block[s->nblock] = (UChar)ch; s->nblock++;
+ s->block[s->nblock] = (UChar)ch; s->nblock++;
+ s->block[s->nblock] = ((UChar)(s->state_in_len-4));
+ s->nblock++;
+ break;
+ }
+}
+
+
+/*---------------------------------------------------*/
+static
+void flush_RL ( EState* s )
+{
+ if (s->state_in_ch < 256) add_pair_to_block ( s );
+ init_RL ( s );
+}
+
+
+/*---------------------------------------------------*/
+#define ADD_CHAR_TO_BLOCK(zs,zchh0) \
+{ \
+ UInt32 zchh = (UInt32)(zchh0); \
+ /*-- fast track the common case --*/ \
+ if (zchh != zs->state_in_ch && \
+ zs->state_in_len == 1) { \
+ UChar ch = (UChar)(zs->state_in_ch); \
+ BZ_UPDATE_CRC( zs->blockCRC, ch ); \
+ zs->inUse[zs->state_in_ch] = True; \
+ zs->block[zs->nblock] = (UChar)ch; \
+ zs->nblock++; \
+ zs->state_in_ch = zchh; \
+ } \
+ else \
+ /*-- general, uncommon cases --*/ \
+ if (zchh != zs->state_in_ch || \
+ zs->state_in_len == 255) { \
+ if (zs->state_in_ch < 256) \
+ add_pair_to_block ( zs ); \
+ zs->state_in_ch = zchh; \
+ zs->state_in_len = 1; \
+ } else { \
+ zs->state_in_len++; \
+ } \
+}
+
+
+/*---------------------------------------------------*/
+static
+Bool copy_input_until_stop ( EState* s )
+{
+ Bool progress_in = False;
+
+ if (s->mode == BZ_M_RUNNING) {
+
+ /*-- fast track the common case --*/
+ while (True) {
+ /*-- block full? --*/
+ if (s->nblock >= s->nblockMAX) break;
+ /*-- no input? --*/
+ if (s->strm->avail_in == 0) break;
+ progress_in = True;
+ ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) );
+ s->strm->next_in++;
+ s->strm->avail_in--;
+ s->strm->total_in_lo32++;
+ if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++;
+ }
+
+ } else {
+
+ /*-- general, uncommon case --*/
+ while (True) {
+ /*-- block full? --*/
+ if (s->nblock >= s->nblockMAX) break;
+ /*-- no input? --*/
+ if (s->strm->avail_in == 0) break;
+ /*-- flush/finish end? --*/
+ if (s->avail_in_expect == 0) break;
+ progress_in = True;
+ ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) );
+ s->strm->next_in++;
+ s->strm->avail_in--;
+ s->strm->total_in_lo32++;
+ if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++;
+ s->avail_in_expect--;
+ }
+ }
+ return progress_in;
+}
+
+
+/*---------------------------------------------------*/
+static
+Bool copy_output_until_stop ( EState* s )
+{
+ Bool progress_out = False;
+
+ while (True) {
+
+ /*-- no output space? --*/
+ if (s->strm->avail_out == 0) break;
+
+ /*-- block done? --*/
+ if (s->state_out_pos >= s->numZ) break;
+
+ progress_out = True;
+ *(s->strm->next_out) = s->zbits[s->state_out_pos];
+ s->state_out_pos++;
+ s->strm->avail_out--;
+ s->strm->next_out++;
+ s->strm->total_out_lo32++;
+ if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+ }
+
+ return progress_out;
+}
+
+
+/*---------------------------------------------------*/
+static
+Bool handle_compress ( bz_stream* strm )
+{
+ Bool progress_in = False;
+ Bool progress_out = False;
+ EState* s = strm->state;
+
+ while (True) {
+
+ if (s->state == BZ_S_OUTPUT) {
+ progress_out |= copy_output_until_stop ( s );
+ if (s->state_out_pos < s->numZ) break;
+ if (s->mode == BZ_M_FINISHING &&
+ s->avail_in_expect == 0 &&
+ isempty_RL(s)) break;
+ prepare_new_block ( s );
+ s->state = BZ_S_INPUT;
+ if (s->mode == BZ_M_FLUSHING &&
+ s->avail_in_expect == 0 &&
+ isempty_RL(s)) break;
+ }
+
+ if (s->state == BZ_S_INPUT) {
+ progress_in |= copy_input_until_stop ( s );
+ if (s->mode != BZ_M_RUNNING && s->avail_in_expect == 0) {
+ flush_RL ( s );
+ BZ2_compressBlock ( s, (Bool)(s->mode == BZ_M_FINISHING) );
+ s->state = BZ_S_OUTPUT;
+ }
+ else
+ if (s->nblock >= s->nblockMAX) {
+ BZ2_compressBlock ( s, False );
+ s->state = BZ_S_OUTPUT;
+ }
+ else
+ if (s->strm->avail_in == 0) {
+ break;
+ }
+ }
+
+ }
+
+ return progress_in || progress_out;
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzCompress) ( bz_stream *strm, int action )
+{
+ Bool progress;
+ EState* s;
+ if (strm == NULL) return BZ_PARAM_ERROR;
+ s = strm->state;
+ if (s == NULL) return BZ_PARAM_ERROR;
+ if (s->strm != strm) return BZ_PARAM_ERROR;
+
+ preswitch:
+ switch (s->mode) {
+
+ case BZ_M_IDLE:
+ return BZ_SEQUENCE_ERROR;
+
+ case BZ_M_RUNNING:
+ if (action == BZ_RUN) {
+ progress = handle_compress ( strm );
+ return progress ? BZ_RUN_OK : BZ_PARAM_ERROR;
+ }
+ else
+ if (action == BZ_FLUSH) {
+ s->avail_in_expect = strm->avail_in;
+ s->mode = BZ_M_FLUSHING;
+ goto preswitch;
+ }
+ else
+ if (action == BZ_FINISH) {
+ s->avail_in_expect = strm->avail_in;
+ s->mode = BZ_M_FINISHING;
+ goto preswitch;
+ }
+ else
+ return BZ_PARAM_ERROR;
+
+ case BZ_M_FLUSHING:
+ if (action != BZ_FLUSH) return BZ_SEQUENCE_ERROR;
+ if (s->avail_in_expect != s->strm->avail_in)
+ return BZ_SEQUENCE_ERROR;
+ progress = handle_compress ( strm );
+ if (s->avail_in_expect > 0 || !isempty_RL(s) ||
+ s->state_out_pos < s->numZ) return BZ_FLUSH_OK;
+ s->mode = BZ_M_RUNNING;
+ return BZ_RUN_OK;
+
+ case BZ_M_FINISHING:
+ if (action != BZ_FINISH) return BZ_SEQUENCE_ERROR;
+ if (s->avail_in_expect != s->strm->avail_in)
+ return BZ_SEQUENCE_ERROR;
+ progress = handle_compress ( strm );
+ if (!progress) return BZ_SEQUENCE_ERROR;
+ if (s->avail_in_expect > 0 || !isempty_RL(s) ||
+ s->state_out_pos < s->numZ) return BZ_FINISH_OK;
+ s->mode = BZ_M_IDLE;
+ return BZ_STREAM_END;
+ }
+ return BZ_OK; /*--not reached--*/
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzCompressEnd) ( bz_stream *strm )
+{
+ EState* s;
+ if (strm == NULL) return BZ_PARAM_ERROR;
+ s = strm->state;
+ if (s == NULL) return BZ_PARAM_ERROR;
+ if (s->strm != strm) return BZ_PARAM_ERROR;
+
+ if (s->arr1 != NULL) BZFREE(s->arr1);
+ if (s->arr2 != NULL) BZFREE(s->arr2);
+ if (s->ftab != NULL) BZFREE(s->ftab);
+ BZFREE(strm->state);
+
+ strm->state = NULL;
+
+ return BZ_OK;
+}
+
+#endif /* BZ_NO_COMPRESS */
+
+/*---------------------------------------------------*/
+/*--- Decompression stuff ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzDecompressInit)
+ ( bz_stream* strm,
+ int verbosity,
+ int small )
+{
+ DState* s;
+
+ if (!bz_config_ok()) return BZ_CONFIG_ERROR;
+
+ if (strm == NULL) return BZ_PARAM_ERROR;
+ if (small != 0 && small != 1) return BZ_PARAM_ERROR;
+ if (verbosity < 0 || verbosity > 4) return BZ_PARAM_ERROR;
+
+ if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc;
+ if (strm->bzfree == NULL) strm->bzfree = default_bzfree;
+
+ s = BZALLOC( sizeof(DState) );
+ if (s == NULL) return BZ_MEM_ERROR;
+ s->strm = strm;
+ strm->state = s;
+ s->state = BZ_X_MAGIC_1;
+ s->bsLive = 0;
+ s->bsBuff = 0;
+ s->calculatedCombinedCRC = 0;
+ strm->total_in_lo32 = 0;
+ strm->total_in_hi32 = 0;
+ strm->total_out_lo32 = 0;
+ strm->total_out_hi32 = 0;
+ s->smallDecompress = (Bool)small;
+ s->ll4 = NULL;
+ s->ll16 = NULL;
+ s->tt = NULL;
+ s->currBlockNo = 0;
+ s->verbosity = verbosity;
+
+ return BZ_OK;
+}
+
+
+/*---------------------------------------------------*/
+/* Return True iff data corruption is discovered.
+ Returns False if there is no problem.
+*/
+static
+Bool unRLE_obuf_to_output_FAST ( DState* s )
+{
+ UChar k1;
+
+ if (s->blockRandomised) {
+
+ while (True) {
+ /* try to finish existing run */
+ while (True) {
+ if (s->strm->avail_out == 0) return False;
+ if (s->state_out_len == 0) break;
+ *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
+ BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
+ s->state_out_len--;
+ s->strm->next_out++;
+ s->strm->avail_out--;
+ s->strm->total_out_lo32++;
+ if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+ }
+
+ /* can a new run be started? */
+ if (s->nblock_used == s->save_nblock+1) return False;
+
+ /* Only caused by corrupt data stream? */
+ if (s->nblock_used > s->save_nblock+1)
+ return True;
+
+ s->state_out_len = 1;
+ s->state_out_ch = s->k0;
+ BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
+ k1 ^= BZ_RAND_MASK; s->nblock_used++;
+ if (s->nblock_used == s->save_nblock+1) continue;
+ if (k1 != s->k0) { s->k0 = k1; continue; };
+
+ s->state_out_len = 2;
+ BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
+ k1 ^= BZ_RAND_MASK; s->nblock_used++;
+ if (s->nblock_used == s->save_nblock+1) continue;
+ if (k1 != s->k0) { s->k0 = k1; continue; };
+
+ s->state_out_len = 3;
+ BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
+ k1 ^= BZ_RAND_MASK; s->nblock_used++;
+ if (s->nblock_used == s->save_nblock+1) continue;
+ if (k1 != s->k0) { s->k0 = k1; continue; };
+
+ BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
+ k1 ^= BZ_RAND_MASK; s->nblock_used++;
+ s->state_out_len = ((Int32)k1) + 4;
+ BZ_GET_FAST(s->k0); BZ_RAND_UPD_MASK;
+ s->k0 ^= BZ_RAND_MASK; s->nblock_used++;
+ }
+
+ } else {
+
+ /* restore */
+ UInt32 c_calculatedBlockCRC = s->calculatedBlockCRC;
+ UChar c_state_out_ch = s->state_out_ch;
+ Int32 c_state_out_len = s->state_out_len;
+ Int32 c_nblock_used = s->nblock_used;
+ Int32 c_k0 = s->k0;
+ UInt32* c_tt = s->tt;
+ UInt32 c_tPos = s->tPos;
+ char* cs_next_out = s->strm->next_out;
+ unsigned int cs_avail_out = s->strm->avail_out;
+ Int32 ro_blockSize100k = s->blockSize100k;
+ /* end restore */
+
+ UInt32 avail_out_INIT = cs_avail_out;
+ Int32 s_save_nblockPP = s->save_nblock+1;
+ unsigned int total_out_lo32_old;
+
+ while (True) {
+
+ /* try to finish existing run */
+ if (c_state_out_len > 0) {
+ while (True) {
+ if (cs_avail_out == 0) goto return_notr;
+ if (c_state_out_len == 1) break;
+ *( (UChar*)(cs_next_out) ) = c_state_out_ch;
+ BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch );
+ c_state_out_len--;
+ cs_next_out++;
+ cs_avail_out--;
+ }
+ s_state_out_len_eq_one:
+ {
+ if (cs_avail_out == 0) {
+ c_state_out_len = 1; goto return_notr;
+ };
+ *( (UChar*)(cs_next_out) ) = c_state_out_ch;
+ BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch );
+ cs_next_out++;
+ cs_avail_out--;
+ }
+ }
+ /* Only caused by corrupt data stream? */
+ if (c_nblock_used > s_save_nblockPP)
+ return True;
+
+ /* can a new run be started? */
+ if (c_nblock_used == s_save_nblockPP) {
+ c_state_out_len = 0; goto return_notr;
+ };
+ c_state_out_ch = c_k0;
+ BZ_GET_FAST_C(k1); c_nblock_used++;
+ if (k1 != c_k0) {
+ c_k0 = k1; goto s_state_out_len_eq_one;
+ };
+ if (c_nblock_used == s_save_nblockPP)
+ goto s_state_out_len_eq_one;
+
+ c_state_out_len = 2;
+ BZ_GET_FAST_C(k1); c_nblock_used++;
+ if (c_nblock_used == s_save_nblockPP) continue;
+ if (k1 != c_k0) { c_k0 = k1; continue; };
+
+ c_state_out_len = 3;
+ BZ_GET_FAST_C(k1); c_nblock_used++;
+ if (c_nblock_used == s_save_nblockPP) continue;
+ if (k1 != c_k0) { c_k0 = k1; continue; };
+
+ BZ_GET_FAST_C(k1); c_nblock_used++;
+ c_state_out_len = ((Int32)k1) + 4;
+ BZ_GET_FAST_C(c_k0); c_nblock_used++;
+ }
+
+ return_notr:
+ total_out_lo32_old = s->strm->total_out_lo32;
+ s->strm->total_out_lo32 += (avail_out_INIT - cs_avail_out);
+ if (s->strm->total_out_lo32 < total_out_lo32_old)
+ s->strm->total_out_hi32++;
+
+ /* save */
+ s->calculatedBlockCRC = c_calculatedBlockCRC;
+ s->state_out_ch = c_state_out_ch;
+ s->state_out_len = c_state_out_len;
+ s->nblock_used = c_nblock_used;
+ s->k0 = c_k0;
+ s->tt = c_tt;
+ s->tPos = c_tPos;
+ s->strm->next_out = cs_next_out;
+ s->strm->avail_out = cs_avail_out;
+ /* end save */
+ }
+ return False;
+}
+
+
+
+/*---------------------------------------------------*/
+__inline__ Int32 BZ2_indexIntoF ( Int32 indx, Int32 *cftab )
+{
+ Int32 nb, na, mid;
+ nb = 0;
+ na = 256;
+ do {
+ mid = (nb + na) >> 1;
+ if (indx >= cftab[mid]) nb = mid; else na = mid;
+ }
+ while (na - nb != 1);
+ return nb;
+}
+
+
+/*---------------------------------------------------*/
+/* Return True iff data corruption is discovered.
+ Returns False if there is no problem.
+*/
+static
+Bool unRLE_obuf_to_output_SMALL ( DState* s )
+{
+ UChar k1;
+
+ if (s->blockRandomised) {
+
+ while (True) {
+ /* try to finish existing run */
+ while (True) {
+ if (s->strm->avail_out == 0) return False;
+ if (s->state_out_len == 0) break;
+ *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
+ BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
+ s->state_out_len--;
+ s->strm->next_out++;
+ s->strm->avail_out--;
+ s->strm->total_out_lo32++;
+ if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+ }
+
+ /* can a new run be started? */
+ if (s->nblock_used == s->save_nblock+1) return False;
+
+ /* Only caused by corrupt data stream? */
+ if (s->nblock_used > s->save_nblock+1)
+ return True;
+
+ s->state_out_len = 1;
+ s->state_out_ch = s->k0;
+ BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
+ k1 ^= BZ_RAND_MASK; s->nblock_used++;
+ if (s->nblock_used == s->save_nblock+1) continue;
+ if (k1 != s->k0) { s->k0 = k1; continue; };
+
+ s->state_out_len = 2;
+ BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
+ k1 ^= BZ_RAND_MASK; s->nblock_used++;
+ if (s->nblock_used == s->save_nblock+1) continue;
+ if (k1 != s->k0) { s->k0 = k1; continue; };
+
+ s->state_out_len = 3;
+ BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
+ k1 ^= BZ_RAND_MASK; s->nblock_used++;
+ if (s->nblock_used == s->save_nblock+1) continue;
+ if (k1 != s->k0) { s->k0 = k1; continue; };
+
+ BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
+ k1 ^= BZ_RAND_MASK; s->nblock_used++;
+ s->state_out_len = ((Int32)k1) + 4;
+ BZ_GET_SMALL(s->k0); BZ_RAND_UPD_MASK;
+ s->k0 ^= BZ_RAND_MASK; s->nblock_used++;
+ }
+
+ } else {
+
+ while (True) {
+ /* try to finish existing run */
+ while (True) {
+ if (s->strm->avail_out == 0) return False;
+ if (s->state_out_len == 0) break;
+ *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
+ BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
+ s->state_out_len--;
+ s->strm->next_out++;
+ s->strm->avail_out--;
+ s->strm->total_out_lo32++;
+ if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+ }
+
+ /* can a new run be started? */
+ if (s->nblock_used == s->save_nblock+1) return False;
+
+ /* Only caused by corrupt data stream? */
+ if (s->nblock_used > s->save_nblock+1)
+ return True;
+
+ s->state_out_len = 1;
+ s->state_out_ch = s->k0;
+ BZ_GET_SMALL(k1); s->nblock_used++;
+ if (s->nblock_used == s->save_nblock+1) continue;
+ if (k1 != s->k0) { s->k0 = k1; continue; };
+
+ s->state_out_len = 2;
+ BZ_GET_SMALL(k1); s->nblock_used++;
+ if (s->nblock_used == s->save_nblock+1) continue;
+ if (k1 != s->k0) { s->k0 = k1; continue; };
+
+ s->state_out_len = 3;
+ BZ_GET_SMALL(k1); s->nblock_used++;
+ if (s->nblock_used == s->save_nblock+1) continue;
+ if (k1 != s->k0) { s->k0 = k1; continue; };
+
+ BZ_GET_SMALL(k1); s->nblock_used++;
+ s->state_out_len = ((Int32)k1) + 4;
+ BZ_GET_SMALL(s->k0); s->nblock_used++;
+ }
+
+ }
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzDecompress) ( bz_stream *strm )
+{
+ Bool corrupt;
+ DState* s;
+ if (strm == NULL) return BZ_PARAM_ERROR;
+ s = strm->state;
+ if (s == NULL) return BZ_PARAM_ERROR;
+ if (s->strm != strm) return BZ_PARAM_ERROR;
+
+ while (True) {
+ if (s->state == BZ_X_IDLE) return BZ_SEQUENCE_ERROR;
+ if (s->state == BZ_X_OUTPUT) {
+ if (s->smallDecompress)
+ corrupt = unRLE_obuf_to_output_SMALL ( s ); else
+ corrupt = unRLE_obuf_to_output_FAST ( s );
+ if (corrupt) return BZ_DATA_ERROR;
+ if (s->nblock_used == s->save_nblock+1 && s->state_out_len == 0) {
+ BZ_FINALISE_CRC ( s->calculatedBlockCRC );
+ if (s->verbosity >= 3)
+ VPrintf2 ( " {0x%08x, 0x%08x}", s->storedBlockCRC,
+ s->calculatedBlockCRC );
+ if (s->verbosity >= 2) VPrintf0 ( "]" );
+ if (s->calculatedBlockCRC != s->storedBlockCRC)
+ return BZ_DATA_ERROR;
+ s->calculatedCombinedCRC
+ = (s->calculatedCombinedCRC << 1) |
+ (s->calculatedCombinedCRC >> 31);
+ s->calculatedCombinedCRC ^= s->calculatedBlockCRC;
+ s->state = BZ_X_BLKHDR_1;
+ } else {
+ return BZ_OK;
+ }
+ }
+ if (s->state >= BZ_X_MAGIC_1) {
+ Int32 r = BZ2_decompress ( s );
+ if (r == BZ_STREAM_END) {
+ if (s->verbosity >= 3)
+ VPrintf2 ( "\n combined CRCs: stored = 0x%08x, computed = 0x%08x",
+ s->storedCombinedCRC, s->calculatedCombinedCRC );
+ if (s->calculatedCombinedCRC != s->storedCombinedCRC)
+ return BZ_DATA_ERROR;
+ return r;
+ }
+ if (s->state != BZ_X_OUTPUT) return r;
+ }
+ }
+
+ AssertH ( 0, 6001 );
+
+ return 0; /*NOTREACHED*/
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzDecompressEnd) ( bz_stream *strm )
+{
+ DState* s;
+ if (strm == NULL) return BZ_PARAM_ERROR;
+ s = strm->state;
+ if (s == NULL) return BZ_PARAM_ERROR;
+ if (s->strm != strm) return BZ_PARAM_ERROR;
+
+ if (s->tt != NULL) BZFREE(s->tt);
+ if (s->ll16 != NULL) BZFREE(s->ll16);
+ if (s->ll4 != NULL) BZFREE(s->ll4);
+
+ BZFREE(strm->state);
+ strm->state = NULL;
+
+ return BZ_OK;
+}
+
+#ifndef BZ_NO_COMPRESS
+
+#ifndef BZ_NO_STDIO
+/*---------------------------------------------------*/
+/*--- File I/O stuff ---*/
+/*---------------------------------------------------*/
+
+#define BZ_SETERR(eee) \
+{ \
+ if (bzerror != NULL) *bzerror = eee; \
+ if (bzf != NULL) bzf->lastErr = eee; \
+}
+
+typedef
+ struct {
+ FILE* handle;
+ Char buf[BZ_MAX_UNUSED];
+ Int32 bufN;
+ Bool writing;
+ bz_stream strm;
+ Int32 lastErr;
+ Bool initialisedOk;
+ }
+ bzFile;
+
+
+/*---------------------------------------------*/
+static Bool myfeof ( FILE* f )
+{
+ Int32 c = fgetc ( f );
+ if (c == EOF) return True;
+ ungetc ( c, f );
+ return False;
+}
+
+
+/*---------------------------------------------------*/
+BZFILE* BZ_API(BZ2_bzWriteOpen)
+ ( int* bzerror,
+ FILE* f,
+ int blockSize100k,
+ int verbosity,
+ int workFactor )
+{
+ Int32 ret;
+ bzFile* bzf = NULL;
+
+ BZ_SETERR(BZ_OK);
+
+ if (f == NULL ||
+ (blockSize100k < 1 || blockSize100k > 9) ||
+ (workFactor < 0 || workFactor > 250) ||
+ (verbosity < 0 || verbosity > 4))
+ { BZ_SETERR(BZ_PARAM_ERROR); return NULL; };
+
+ if (ferror(f))
+ { BZ_SETERR(BZ_IO_ERROR); return NULL; };
+
+ bzf = malloc ( sizeof(bzFile) );
+ if (bzf == NULL)
+ { BZ_SETERR(BZ_MEM_ERROR); return NULL; };
+
+ BZ_SETERR(BZ_OK);
+ bzf->initialisedOk = False;
+ bzf->bufN = 0;
+ bzf->handle = f;
+ bzf->writing = True;
+ bzf->strm.bzalloc = NULL;
+ bzf->strm.bzfree = NULL;
+ bzf->strm.opaque = NULL;
+
+ if (workFactor == 0) workFactor = 30;
+ ret = BZ2_bzCompressInit ( &(bzf->strm), blockSize100k,
+ verbosity, workFactor );
+ if (ret != BZ_OK)
+ { BZ_SETERR(ret); free(bzf); return NULL; };
+
+ bzf->strm.avail_in = 0;
+ bzf->initialisedOk = True;
+ return bzf;
+}
+
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzWrite)
+ ( int* bzerror,
+ BZFILE* b,
+ void* buf,
+ int len )
+{
+ Int32 n, n2, ret;
+ bzFile* bzf = (bzFile*)b;
+
+ BZ_SETERR(BZ_OK);
+ if (bzf == NULL || buf == NULL || len < 0)
+ { BZ_SETERR(BZ_PARAM_ERROR); return; };
+ if (!(bzf->writing))
+ { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+ if (ferror(bzf->handle))
+ { BZ_SETERR(BZ_IO_ERROR); return; };
+
+ if (len == 0)
+ { BZ_SETERR(BZ_OK); return; };
+
+ bzf->strm.avail_in = len;
+ bzf->strm.next_in = buf;
+
+ while (True) {
+ bzf->strm.avail_out = BZ_MAX_UNUSED;
+ bzf->strm.next_out = bzf->buf;
+ ret = BZ2_bzCompress ( &(bzf->strm), BZ_RUN );
+ if (ret != BZ_RUN_OK)
+ { BZ_SETERR(ret); return; };
+
+ if (bzf->strm.avail_out < BZ_MAX_UNUSED) {
+ n = BZ_MAX_UNUSED - bzf->strm.avail_out;
+ n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar),
+ n, bzf->handle );
+ if (n != n2 || ferror(bzf->handle))
+ { BZ_SETERR(BZ_IO_ERROR); return; };
+ }
+
+ if (bzf->strm.avail_in == 0)
+ { BZ_SETERR(BZ_OK); return; };
+ }
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzWriteClose)
+ ( int* bzerror,
+ BZFILE* b,
+ int abandon,
+ unsigned int* nbytes_in,
+ unsigned int* nbytes_out )
+{
+ BZ2_bzWriteClose64 ( bzerror, b, abandon,
+ nbytes_in, NULL, nbytes_out, NULL );
+}
+
+
+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 )
+{
+ Int32 n, n2, ret;
+ bzFile* bzf = (bzFile*)b;
+
+ if (bzf == NULL)
+ { BZ_SETERR(BZ_OK); return; };
+ if (!(bzf->writing))
+ { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+ if (ferror(bzf->handle))
+ { BZ_SETERR(BZ_IO_ERROR); return; };
+
+ if (nbytes_in_lo32 != NULL) *nbytes_in_lo32 = 0;
+ if (nbytes_in_hi32 != NULL) *nbytes_in_hi32 = 0;
+ if (nbytes_out_lo32 != NULL) *nbytes_out_lo32 = 0;
+ if (nbytes_out_hi32 != NULL) *nbytes_out_hi32 = 0;
+
+ if ((!abandon) && bzf->lastErr == BZ_OK) {
+ while (True) {
+ bzf->strm.avail_out = BZ_MAX_UNUSED;
+ bzf->strm.next_out = bzf->buf;
+ ret = BZ2_bzCompress ( &(bzf->strm), BZ_FINISH );
+ if (ret != BZ_FINISH_OK && ret != BZ_STREAM_END)
+ { BZ_SETERR(ret); return; };
+
+ if (bzf->strm.avail_out < BZ_MAX_UNUSED) {
+ n = BZ_MAX_UNUSED - bzf->strm.avail_out;
+ n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar),
+ n, bzf->handle );
+ if (n != n2 || ferror(bzf->handle))
+ { BZ_SETERR(BZ_IO_ERROR); return; };
+ }
+
+ if (ret == BZ_STREAM_END) break;
+ }
+ }
+
+ if ( !abandon && !ferror ( bzf->handle ) ) {
+ fflush ( bzf->handle );
+ if (ferror(bzf->handle))
+ { BZ_SETERR(BZ_IO_ERROR); return; };
+ }
+
+ if (nbytes_in_lo32 != NULL)
+ *nbytes_in_lo32 = bzf->strm.total_in_lo32;
+ if (nbytes_in_hi32 != NULL)
+ *nbytes_in_hi32 = bzf->strm.total_in_hi32;
+ if (nbytes_out_lo32 != NULL)
+ *nbytes_out_lo32 = bzf->strm.total_out_lo32;
+ if (nbytes_out_hi32 != NULL)
+ *nbytes_out_hi32 = bzf->strm.total_out_hi32;
+
+ BZ_SETERR(BZ_OK);
+ BZ2_bzCompressEnd ( &(bzf->strm) );
+ free ( bzf );
+}
+
+
+/*---------------------------------------------------*/
+BZFILE* BZ_API(BZ2_bzReadOpen)
+ ( int* bzerror,
+ FILE* f,
+ int verbosity,
+ int small,
+ void* unused,
+ int nUnused )
+{
+ bzFile* bzf = NULL;
+ int ret;
+
+ BZ_SETERR(BZ_OK);
+
+ if (f == NULL ||
+ (small != 0 && small != 1) ||
+ (verbosity < 0 || verbosity > 4) ||
+ (unused == NULL && nUnused != 0) ||
+ (unused != NULL && (nUnused < 0 || nUnused > BZ_MAX_UNUSED)))
+ { BZ_SETERR(BZ_PARAM_ERROR); return NULL; };
+
+ if (ferror(f))
+ { BZ_SETERR(BZ_IO_ERROR); return NULL; };
+
+ bzf = malloc ( sizeof(bzFile) );
+ if (bzf == NULL)
+ { BZ_SETERR(BZ_MEM_ERROR); return NULL; };
+
+ BZ_SETERR(BZ_OK);
+
+ bzf->initialisedOk = False;
+ bzf->handle = f;
+ bzf->bufN = 0;
+ bzf->writing = False;
+ bzf->strm.bzalloc = NULL;
+ bzf->strm.bzfree = NULL;
+ bzf->strm.opaque = NULL;
+
+ while (nUnused > 0) {
+ bzf->buf[bzf->bufN] = *((UChar*)(unused)); bzf->bufN++;
+ unused = ((void*)( 1 + ((UChar*)(unused)) ));
+ nUnused--;
+ }
+
+ ret = BZ2_bzDecompressInit ( &(bzf->strm), verbosity, small );
+ if (ret != BZ_OK)
+ { BZ_SETERR(ret); free(bzf); return NULL; };
+
+ bzf->strm.avail_in = bzf->bufN;
+ bzf->strm.next_in = bzf->buf;
+
+ bzf->initialisedOk = True;
+ return bzf;
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzReadClose) ( int *bzerror, BZFILE *b )
+{
+ bzFile* bzf = (bzFile*)b;
+
+ BZ_SETERR(BZ_OK);
+ if (bzf == NULL)
+ { BZ_SETERR(BZ_OK); return; };
+
+ if (bzf->writing)
+ { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+
+ if (bzf->initialisedOk)
+ (void)BZ2_bzDecompressEnd ( &(bzf->strm) );
+ free ( bzf );
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzRead)
+ ( int* bzerror,
+ BZFILE* b,
+ void* buf,
+ int len )
+{
+ Int32 n, ret;
+ bzFile* bzf = (bzFile*)b;
+
+ BZ_SETERR(BZ_OK);
+
+ if (bzf == NULL || buf == NULL || len < 0)
+ { BZ_SETERR(BZ_PARAM_ERROR); return 0; };
+
+ if (bzf->writing)
+ { BZ_SETERR(BZ_SEQUENCE_ERROR); return 0; };
+
+ if (len == 0)
+ { BZ_SETERR(BZ_OK); return 0; };
+
+ bzf->strm.avail_out = len;
+ bzf->strm.next_out = buf;
+
+ while (True) {
+
+ if (ferror(bzf->handle))
+ { BZ_SETERR(BZ_IO_ERROR); return 0; };
+
+ if (bzf->strm.avail_in == 0 && !myfeof(bzf->handle)) {
+ n = fread ( bzf->buf, sizeof(UChar),
+ BZ_MAX_UNUSED, bzf->handle );
+ if (ferror(bzf->handle))
+ { BZ_SETERR(BZ_IO_ERROR); return 0; };
+ bzf->bufN = n;
+ bzf->strm.avail_in = bzf->bufN;
+ bzf->strm.next_in = bzf->buf;
+ }
+
+ ret = BZ2_bzDecompress ( &(bzf->strm) );
+
+ if (ret != BZ_OK && ret != BZ_STREAM_END)
+ { BZ_SETERR(ret); return 0; };
+
+ if (ret == BZ_OK && myfeof(bzf->handle) &&
+ bzf->strm.avail_in == 0 && bzf->strm.avail_out > 0)
+ { BZ_SETERR(BZ_UNEXPECTED_EOF); return 0; };
+
+ if (ret == BZ_STREAM_END)
+ { BZ_SETERR(BZ_STREAM_END);
+ return len - bzf->strm.avail_out; };
+ if (bzf->strm.avail_out == 0)
+ { BZ_SETERR(BZ_OK); return len; };
+
+ }
+
+ return 0; /*not reached*/
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzReadGetUnused)
+ ( int* bzerror,
+ BZFILE* b,
+ void** unused,
+ int* nUnused )
+{
+ bzFile* bzf = (bzFile*)b;
+ if (bzf == NULL)
+ { BZ_SETERR(BZ_PARAM_ERROR); return; };
+ if (bzf->lastErr != BZ_STREAM_END)
+ { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+ if (unused == NULL || nUnused == NULL)
+ { BZ_SETERR(BZ_PARAM_ERROR); return; };
+
+ BZ_SETERR(BZ_OK);
+ *nUnused = bzf->strm.avail_in;
+ *unused = bzf->strm.next_in;
+}
+#endif
+
+
+/*---------------------------------------------------*/
+/*--- Misc convenience stuff ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzBuffToBuffCompress)
+ ( char* dest,
+ unsigned int* destLen,
+ char* source,
+ unsigned int sourceLen,
+ int blockSize100k,
+ int verbosity,
+ int workFactor )
+{
+ bz_stream strm;
+ int ret;
+
+ if (dest == NULL || destLen == NULL ||
+ source == NULL ||
+ blockSize100k < 1 || blockSize100k > 9 ||
+ verbosity < 0 || verbosity > 4 ||
+ workFactor < 0 || workFactor > 250)
+ return BZ_PARAM_ERROR;
+
+ if (workFactor == 0) workFactor = 30;
+ strm.bzalloc = NULL;
+ strm.bzfree = NULL;
+ strm.opaque = NULL;
+ ret = BZ2_bzCompressInit ( &strm, blockSize100k,
+ verbosity, workFactor );
+ if (ret != BZ_OK) return ret;
+
+ strm.next_in = source;
+ strm.next_out = dest;
+ strm.avail_in = sourceLen;
+ strm.avail_out = *destLen;
+
+ ret = BZ2_bzCompress ( &strm, BZ_FINISH );
+ if (ret == BZ_FINISH_OK) goto output_overflow;
+ if (ret != BZ_STREAM_END) goto errhandler;
+
+ /* normal termination */
+ *destLen -= strm.avail_out;
+ BZ2_bzCompressEnd ( &strm );
+ return BZ_OK;
+
+ output_overflow:
+ BZ2_bzCompressEnd ( &strm );
+ return BZ_OUTBUFF_FULL;
+
+ errhandler:
+ BZ2_bzCompressEnd ( &strm );
+ return ret;
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzBuffToBuffDecompress)
+ ( char* dest,
+ unsigned int* destLen,
+ char* source,
+ unsigned int sourceLen,
+ int small,
+ int verbosity )
+{
+ bz_stream strm;
+ int ret;
+
+ if (dest == NULL || destLen == NULL ||
+ source == NULL ||
+ (small != 0 && small != 1) ||
+ verbosity < 0 || verbosity > 4)
+ return BZ_PARAM_ERROR;
+
+ strm.bzalloc = NULL;
+ strm.bzfree = NULL;
+ strm.opaque = NULL;
+ ret = BZ2_bzDecompressInit ( &strm, verbosity, small );
+ if (ret != BZ_OK) return ret;
+
+ strm.next_in = source;
+ strm.next_out = dest;
+ strm.avail_in = sourceLen;
+ strm.avail_out = *destLen;
+
+ ret = BZ2_bzDecompress ( &strm );
+ if (ret == BZ_OK) goto output_overflow_or_eof;
+ if (ret != BZ_STREAM_END) goto errhandler;
+
+ /* normal termination */
+ *destLen -= strm.avail_out;
+ BZ2_bzDecompressEnd ( &strm );
+ return BZ_OK;
+
+ output_overflow_or_eof:
+ if (strm.avail_out > 0) {
+ BZ2_bzDecompressEnd ( &strm );
+ return BZ_UNEXPECTED_EOF;
+ } else {
+ BZ2_bzDecompressEnd ( &strm );
+ return BZ_OUTBUFF_FULL;
+ };
+
+ errhandler:
+ BZ2_bzDecompressEnd ( &strm );
+ return ret;
+}
+
+
+/*---------------------------------------------------*/
+/*--
+ Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.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.
+--*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+/*--
+ return version like "0.9.5d, 4-Sept-1999".
+--*/
+const char * BZ_API(BZ2_bzlibVersion)(void)
+{
+ return BZ_VERSION;
+}
+
+
+#ifndef BZ_NO_STDIO
+/*---------------------------------------------------*/
+
+#if defined(_WIN32) || defined(OS2) || defined(MSDOS)
+# include <fcntl.h>
+# include <io.h>
+# define SET_BINARY_MODE(file) setmode(fileno(file),O_BINARY)
+#else
+# define SET_BINARY_MODE(file)
+#endif
+static
+BZFILE * bzopen_or_bzdopen
+ ( const char *path, /* no use when bzdopen */
+ int fd, /* no use when bzdopen */
+ const char *mode,
+ int open_mode) /* bzopen: 0, bzdopen:1 */
+{
+ int bzerr;
+ char unused[BZ_MAX_UNUSED];
+ int blockSize100k = 9;
+ int writing = 0;
+ char mode2[10] = "";
+ FILE *fp = NULL;
+ BZFILE *bzfp = NULL;
+ int verbosity = 0;
+ int workFactor = 30;
+ int smallMode = 0;
+ int nUnused = 0;
+
+ if (mode == NULL) return NULL;
+ while (*mode) {
+ switch (*mode) {
+ case 'r':
+ writing = 0; break;
+ case 'w':
+ writing = 1; break;
+ case 's':
+ smallMode = 1; break;
+ default:
+ if (isdigit((int)(*mode))) {
+ blockSize100k = *mode-BZ_HDR_0;
+ }
+ }
+ mode++;
+ }
+ strcat(mode2, writing ? "w" : "r" );
+ strcat(mode2,"b"); /* binary mode */
+
+ if (open_mode==0) {
+ if (path==NULL || strcmp(path,"")==0) {
+ fp = (writing ? stdout : stdin);
+ SET_BINARY_MODE(fp);
+ } else {
+ fp = fopen(path,mode2);
+ }
+ } else {
+#ifdef BZ_STRICT_ANSI
+ fp = NULL;
+#else
+ fp = fdopen(fd,mode2);
+#endif
+ }
+ if (fp == NULL) return NULL;
+
+ if (writing) {
+ /* Guard against total chaos and anarchy -- JRS */
+ if (blockSize100k < 1) blockSize100k = 1;
+ if (blockSize100k > 9) blockSize100k = 9;
+ bzfp = BZ2_bzWriteOpen(&bzerr,fp,blockSize100k,
+ verbosity,workFactor);
+ } else {
+ bzfp = BZ2_bzReadOpen(&bzerr,fp,verbosity,smallMode,
+ unused,nUnused);
+ }
+ if (bzfp == NULL) {
+ if (fp != stdin && fp != stdout) fclose(fp);
+ return NULL;
+ }
+ return bzfp;
+}
+
+
+/*---------------------------------------------------*/
+/*--
+ open file for read or write.
+ ex) bzopen("file","w9")
+ case path="" or NULL => use stdin or stdout.
+--*/
+BZFILE * BZ_API(BZ2_bzopen)
+ ( const char *path,
+ const char *mode )
+{
+ return bzopen_or_bzdopen(path,-1,mode,/*bzopen*/0);
+}
+
+
+/*---------------------------------------------------*/
+BZFILE * BZ_API(BZ2_bzdopen)
+ ( int fd,
+ const char *mode )
+{
+ return bzopen_or_bzdopen(NULL,fd,mode,/*bzdopen*/1);
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzread) (BZFILE* b, void* buf, int len )
+{
+ int bzerr, nread;
+ if (((bzFile*)b)->lastErr == BZ_STREAM_END) return 0;
+ nread = BZ2_bzRead(&bzerr,b,buf,len);
+ if (bzerr == BZ_OK || bzerr == BZ_STREAM_END) {
+ return nread;
+ } else {
+ return -1;
+ }
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzwrite) (BZFILE* b, void* buf, int len )
+{
+ int bzerr;
+
+ BZ2_bzWrite(&bzerr,b,buf,len);
+ if(bzerr == BZ_OK){
+ return len;
+ }else{
+ return -1;
+ }
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzflush) (BZFILE *b)
+{
+ /* do nothing now... */
+ return 0;
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzclose) (BZFILE* b)
+{
+ int bzerr;
+ FILE *fp;
+
+ if (b==NULL) {return;}
+ fp = ((bzFile *)b)->handle;
+ if(((bzFile*)b)->writing){
+ BZ2_bzWriteClose(&bzerr,b,0,NULL,NULL);
+ if(bzerr != BZ_OK){
+ BZ2_bzWriteClose(NULL,b,1,NULL,NULL);
+ }
+ }else{
+ BZ2_bzReadClose(&bzerr,b);
+ }
+ if(fp!=stdin && fp!=stdout){
+ fclose(fp);
+ }
+}
+
+
+/*---------------------------------------------------*/
+/*--
+ return last error code
+--*/
+static const char *bzerrorstrings[] = {
+ "OK"
+ ,"SEQUENCE_ERROR"
+ ,"PARAM_ERROR"
+ ,"MEM_ERROR"
+ ,"DATA_ERROR"
+ ,"DATA_ERROR_MAGIC"
+ ,"IO_ERROR"
+ ,"UNEXPECTED_EOF"
+ ,"OUTBUFF_FULL"
+ ,"CONFIG_ERROR"
+ ,"???" /* for future */
+ ,"???" /* for future */
+ ,"???" /* for future */
+ ,"???" /* for future */
+ ,"???" /* for future */
+ ,"???" /* for future */
+};
+
+
+const char * BZ_API(BZ2_bzerror) (BZFILE *b, int *errnum)
+{
+ int err = ((bzFile *)b)->lastErr;
+
+ if(err>0) err = 0;
+ *errnum = err;
+ return bzerrorstrings[err*-1];
+}
+#endif
+
+#endif /* BZ_NO_COMPRESS */
+
+/*-------------------------------------------------------------*/
+/*--- end bzlib.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/contrib/bzip2/bzlib.h b/contrib/bzip2/bzlib.h
new file mode 100644
index 000000000000..8277123da8cf
--- /dev/null
+++ b/contrib/bzip2/bzlib.h
@@ -0,0 +1,282 @@
+
+/*-------------------------------------------------------------*/
+/*--- Public header file for the library. ---*/
+/*--- bzlib.h ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+ This file is part of bzip2/libbzip2, a program and library for
+ lossless, block-sorting data compression.
+
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+ Please read the WARNING, DISCLAIMER and PATENTS sections in the
+ README file.
+
+ This program is released under the terms of the license contained
+ in the file LICENSE.
+ ------------------------------------------------------------------ */
+
+
+#ifndef _BZLIB_H
+#define _BZLIB_H
+
+#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
+
+#ifndef BZ_NO_STDIO
+/* Need a definitition for FILE */
+#include <stdio.h>
+#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
+
+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 (tsuneo@rr.iij4u.or.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 ---*/
+/*-------------------------------------------------------------*/
diff --git a/contrib/bzip2/bzlib_private.h b/contrib/bzip2/bzlib_private.h
new file mode 100644
index 000000000000..5d0217f46350
--- /dev/null
+++ b/contrib/bzip2/bzlib_private.h
@@ -0,0 +1,509 @@
+
+/*-------------------------------------------------------------*/
+/*--- Private header file for the library. ---*/
+/*--- bzlib_private.h ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+ This file is part of bzip2/libbzip2, a program and library for
+ lossless, block-sorting data compression.
+
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+ Please read the WARNING, DISCLAIMER and PATENTS sections in the
+ README file.
+
+ This program is released under the terms of the license contained
+ in the file LICENSE.
+ ------------------------------------------------------------------ */
+
+
+#ifndef _BZLIB_PRIVATE_H
+#define _BZLIB_PRIVATE_H
+
+#include <stdlib.h>
+
+#ifndef BZ_NO_STDIO
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#endif
+
+#include "bzlib.h"
+
+
+
+/*-- General stuff. --*/
+
+#define BZ_VERSION "1.0.6, 6-Sept-2010"
+
+typedef char Char;
+typedef unsigned char Bool;
+typedef unsigned char UChar;
+typedef int Int32;
+typedef unsigned int UInt32;
+typedef short Int16;
+typedef unsigned short UInt16;
+
+#define True ((Bool)1)
+#define False ((Bool)0)
+
+#ifndef __GNUC__
+#define __inline__ /* */
+#endif
+
+#ifndef BZ_NO_STDIO
+
+extern void BZ2_bz__AssertH__fail ( int errcode );
+#define AssertH(cond,errcode) \
+ { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); }
+
+#if BZ_DEBUG
+#define AssertD(cond,msg) \
+ { if (!(cond)) { \
+ fprintf ( stderr, \
+ "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\
+ exit(1); \
+ }}
+#else
+#define AssertD(cond,msg) /* */
+#endif
+
+#define VPrintf0(zf) \
+ fprintf(stderr,zf)
+#define VPrintf1(zf,za1) \
+ fprintf(stderr,zf,za1)
+#define VPrintf2(zf,za1,za2) \
+ fprintf(stderr,zf,za1,za2)
+#define VPrintf3(zf,za1,za2,za3) \
+ fprintf(stderr,zf,za1,za2,za3)
+#define VPrintf4(zf,za1,za2,za3,za4) \
+ fprintf(stderr,zf,za1,za2,za3,za4)
+#define VPrintf5(zf,za1,za2,za3,za4,za5) \
+ fprintf(stderr,zf,za1,za2,za3,za4,za5)
+
+#else
+
+extern void bz_internal_error ( int errcode );
+#define AssertH(cond,errcode) \
+ { if (!(cond)) bz_internal_error ( errcode ); }
+#define AssertD(cond,msg) do { } while (0)
+#define VPrintf0(zf) do { } while (0)
+#define VPrintf1(zf,za1) do { } while (0)
+#define VPrintf2(zf,za1,za2) do { } while (0)
+#define VPrintf3(zf,za1,za2,za3) do { } while (0)
+#define VPrintf4(zf,za1,za2,za3,za4) do { } while (0)
+#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0)
+
+#endif
+
+
+#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1)
+#define BZFREE(ppp) (strm->bzfree)(strm->opaque,(ppp))
+
+
+/*-- Header bytes. --*/
+
+#define BZ_HDR_B 0x42 /* 'B' */
+#define BZ_HDR_Z 0x5a /* 'Z' */
+#define BZ_HDR_h 0x68 /* 'h' */
+#define BZ_HDR_0 0x30 /* '0' */
+
+/*-- Constants for the back end. --*/
+
+#define BZ_MAX_ALPHA_SIZE 258
+#define BZ_MAX_CODE_LEN 23
+
+#define BZ_RUNA 0
+#define BZ_RUNB 1
+
+#define BZ_N_GROUPS 6
+#define BZ_G_SIZE 50
+#define BZ_N_ITERS 4
+
+#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE))
+
+
+
+/*-- Stuff for randomising repetitive blocks. --*/
+
+extern Int32 BZ2_rNums[512];
+
+#define BZ_RAND_DECLS \
+ Int32 rNToGo; \
+ Int32 rTPos \
+
+#define BZ_RAND_INIT_MASK \
+ s->rNToGo = 0; \
+ s->rTPos = 0 \
+
+#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0)
+
+#define BZ_RAND_UPD_MASK \
+ if (s->rNToGo == 0) { \
+ s->rNToGo = BZ2_rNums[s->rTPos]; \
+ s->rTPos++; \
+ if (s->rTPos == 512) s->rTPos = 0; \
+ } \
+ s->rNToGo--;
+
+
+
+/*-- Stuff for doing CRCs. --*/
+
+extern UInt32 BZ2_crc32Table[256];
+
+#define BZ_INITIALISE_CRC(crcVar) \
+{ \
+ crcVar = 0xffffffffL; \
+}
+
+#define BZ_FINALISE_CRC(crcVar) \
+{ \
+ crcVar = ~(crcVar); \
+}
+
+#define BZ_UPDATE_CRC(crcVar,cha) \
+{ \
+ crcVar = (crcVar << 8) ^ \
+ BZ2_crc32Table[(crcVar >> 24) ^ \
+ ((UChar)cha)]; \
+}
+
+
+
+/*-- States and modes for compression. --*/
+
+#define BZ_M_IDLE 1
+#define BZ_M_RUNNING 2
+#define BZ_M_FLUSHING 3
+#define BZ_M_FINISHING 4
+
+#define BZ_S_OUTPUT 1
+#define BZ_S_INPUT 2
+
+#define BZ_N_RADIX 2
+#define BZ_N_QSORT 12
+#define BZ_N_SHELL 18
+#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2)
+
+
+
+
+/*-- Structure holding all the compression-side stuff. --*/
+
+typedef
+ struct {
+ /* pointer back to the struct bz_stream */
+ bz_stream* strm;
+
+ /* mode this stream is in, and whether inputting */
+ /* or outputting data */
+ Int32 mode;
+ Int32 state;
+
+ /* remembers avail_in when flush/finish requested */
+ UInt32 avail_in_expect;
+
+ /* for doing the block sorting */
+ UInt32* arr1;
+ UInt32* arr2;
+ UInt32* ftab;
+ Int32 origPtr;
+
+ /* aliases for arr1 and arr2 */
+ UInt32* ptr;
+ UChar* block;
+ UInt16* mtfv;
+ UChar* zbits;
+
+ /* for deciding when to use the fallback sorting algorithm */
+ Int32 workFactor;
+
+ /* run-length-encoding of the input */
+ UInt32 state_in_ch;
+ Int32 state_in_len;
+ BZ_RAND_DECLS;
+
+ /* input and output limits and current posns */
+ Int32 nblock;
+ Int32 nblockMAX;
+ Int32 numZ;
+ Int32 state_out_pos;
+
+ /* map of bytes used in block */
+ Int32 nInUse;
+ Bool inUse[256];
+ UChar unseqToSeq[256];
+
+ /* the buffer for bit stream creation */
+ UInt32 bsBuff;
+ Int32 bsLive;
+
+ /* block and combined CRCs */
+ UInt32 blockCRC;
+ UInt32 combinedCRC;
+
+ /* misc administratium */
+ Int32 verbosity;
+ Int32 blockNo;
+ Int32 blockSize100k;
+
+ /* stuff for coding the MTF values */
+ Int32 nMTF;
+ Int32 mtfFreq [BZ_MAX_ALPHA_SIZE];
+ UChar selector [BZ_MAX_SELECTORS];
+ UChar selectorMtf[BZ_MAX_SELECTORS];
+
+ UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+ Int32 code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+ Int32 rfreq [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+ /* second dimension: only 3 needed; 4 makes index calculations faster */
+ UInt32 len_pack[BZ_MAX_ALPHA_SIZE][4];
+
+ }
+ EState;
+
+
+
+/*-- externs for compression. --*/
+
+extern void
+BZ2_blockSort ( EState* );
+
+extern void
+BZ2_compressBlock ( EState*, Bool );
+
+extern void
+BZ2_bsInitWrite ( EState* );
+
+extern void
+BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 );
+
+extern void
+BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 );
+
+
+
+/*-- states for decompression. --*/
+
+#define BZ_X_IDLE 1
+#define BZ_X_OUTPUT 2
+
+#define BZ_X_MAGIC_1 10
+#define BZ_X_MAGIC_2 11
+#define BZ_X_MAGIC_3 12
+#define BZ_X_MAGIC_4 13
+#define BZ_X_BLKHDR_1 14
+#define BZ_X_BLKHDR_2 15
+#define BZ_X_BLKHDR_3 16
+#define BZ_X_BLKHDR_4 17
+#define BZ_X_BLKHDR_5 18
+#define BZ_X_BLKHDR_6 19
+#define BZ_X_BCRC_1 20
+#define BZ_X_BCRC_2 21
+#define BZ_X_BCRC_3 22
+#define BZ_X_BCRC_4 23
+#define BZ_X_RANDBIT 24
+#define BZ_X_ORIGPTR_1 25
+#define BZ_X_ORIGPTR_2 26
+#define BZ_X_ORIGPTR_3 27
+#define BZ_X_MAPPING_1 28
+#define BZ_X_MAPPING_2 29
+#define BZ_X_SELECTOR_1 30
+#define BZ_X_SELECTOR_2 31
+#define BZ_X_SELECTOR_3 32
+#define BZ_X_CODING_1 33
+#define BZ_X_CODING_2 34
+#define BZ_X_CODING_3 35
+#define BZ_X_MTF_1 36
+#define BZ_X_MTF_2 37
+#define BZ_X_MTF_3 38
+#define BZ_X_MTF_4 39
+#define BZ_X_MTF_5 40
+#define BZ_X_MTF_6 41
+#define BZ_X_ENDHDR_2 42
+#define BZ_X_ENDHDR_3 43
+#define BZ_X_ENDHDR_4 44
+#define BZ_X_ENDHDR_5 45
+#define BZ_X_ENDHDR_6 46
+#define BZ_X_CCRC_1 47
+#define BZ_X_CCRC_2 48
+#define BZ_X_CCRC_3 49
+#define BZ_X_CCRC_4 50
+
+
+
+/*-- Constants for the fast MTF decoder. --*/
+
+#define MTFA_SIZE 4096
+#define MTFL_SIZE 16
+
+
+
+/*-- Structure holding all the decompression-side stuff. --*/
+
+typedef
+ struct {
+ /* pointer back to the struct bz_stream */
+ bz_stream* strm;
+
+ /* state indicator for this stream */
+ Int32 state;
+
+ /* for doing the final run-length decoding */
+ UChar state_out_ch;
+ Int32 state_out_len;
+ Bool blockRandomised;
+ BZ_RAND_DECLS;
+
+ /* the buffer for bit stream reading */
+ UInt32 bsBuff;
+ Int32 bsLive;
+
+ /* misc administratium */
+ Int32 blockSize100k;
+ Bool smallDecompress;
+ Int32 currBlockNo;
+ Int32 verbosity;
+
+ /* for undoing the Burrows-Wheeler transform */
+ Int32 origPtr;
+ UInt32 tPos;
+ Int32 k0;
+ Int32 unzftab[256];
+ Int32 nblock_used;
+ Int32 cftab[257];
+ Int32 cftabCopy[257];
+
+ /* for undoing the Burrows-Wheeler transform (FAST) */
+ UInt32 *tt;
+
+ /* for undoing the Burrows-Wheeler transform (SMALL) */
+ UInt16 *ll16;
+ UChar *ll4;
+
+ /* stored and calculated CRCs */
+ UInt32 storedBlockCRC;
+ UInt32 storedCombinedCRC;
+ UInt32 calculatedBlockCRC;
+ UInt32 calculatedCombinedCRC;
+
+ /* map of bytes used in block */
+ Int32 nInUse;
+ Bool inUse[256];
+ Bool inUse16[16];
+ UChar seqToUnseq[256];
+
+ /* for decoding the MTF values */
+ UChar mtfa [MTFA_SIZE];
+ Int32 mtfbase[256 / MTFL_SIZE];
+ UChar selector [BZ_MAX_SELECTORS];
+ UChar selectorMtf[BZ_MAX_SELECTORS];
+ UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+
+ Int32 limit [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+ Int32 base [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+ Int32 perm [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+ Int32 minLens[BZ_N_GROUPS];
+
+ /* save area for scalars in the main decompress code */
+ Int32 save_i;
+ Int32 save_j;
+ Int32 save_t;
+ Int32 save_alphaSize;
+ Int32 save_nGroups;
+ Int32 save_nSelectors;
+ Int32 save_EOB;
+ Int32 save_groupNo;
+ Int32 save_groupPos;
+ Int32 save_nextSym;
+ Int32 save_nblockMAX;
+ Int32 save_nblock;
+ Int32 save_es;
+ Int32 save_N;
+ Int32 save_curr;
+ Int32 save_zt;
+ Int32 save_zn;
+ Int32 save_zvec;
+ Int32 save_zj;
+ Int32 save_gSel;
+ Int32 save_gMinlen;
+ Int32* save_gLimit;
+ Int32* save_gBase;
+ Int32* save_gPerm;
+
+ }
+ DState;
+
+
+
+/*-- Macros for decompression. --*/
+
+#define BZ_GET_FAST(cccc) \
+ /* c_tPos is unsigned, hence test < 0 is pointless. */ \
+ if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
+ s->tPos = s->tt[s->tPos]; \
+ cccc = (UChar)(s->tPos & 0xff); \
+ s->tPos >>= 8;
+
+#define BZ_GET_FAST_C(cccc) \
+ /* c_tPos is unsigned, hence test < 0 is pointless. */ \
+ if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \
+ c_tPos = c_tt[c_tPos]; \
+ cccc = (UChar)(c_tPos & 0xff); \
+ c_tPos >>= 8;
+
+#define SET_LL4(i,n) \
+ { if (((i) & 0x1) == 0) \
+ s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else \
+ s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4); \
+ }
+
+#define GET_LL4(i) \
+ ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF)
+
+#define SET_LL(i,n) \
+ { s->ll16[i] = (UInt16)(n & 0x0000ffff); \
+ SET_LL4(i, n >> 16); \
+ }
+
+#define GET_LL(i) \
+ (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16))
+
+#define BZ_GET_SMALL(cccc) \
+ /* c_tPos is unsigned, hence test < 0 is pointless. */ \
+ if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
+ cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \
+ s->tPos = GET_LL(s->tPos);
+
+
+/*-- externs for decompression. --*/
+
+extern Int32
+BZ2_indexIntoF ( Int32, Int32* );
+
+extern Int32
+BZ2_decompress ( DState* );
+
+extern void
+BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*,
+ Int32, Int32, Int32 );
+
+
+#endif
+
+
+/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/
+
+#ifdef BZ_NO_STDIO
+#ifndef NULL
+#define NULL 0
+#endif
+#endif
+
+
+/*-------------------------------------------------------------*/
+/*--- end bzlib_private.h ---*/
+/*-------------------------------------------------------------*/
diff --git a/contrib/bzip2/compress.c b/contrib/bzip2/compress.c
new file mode 100644
index 000000000000..caf7696011b6
--- /dev/null
+++ b/contrib/bzip2/compress.c
@@ -0,0 +1,672 @@
+
+/*-------------------------------------------------------------*/
+/*--- Compression machinery (not incl block sorting) ---*/
+/*--- compress.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+ This file is part of bzip2/libbzip2, a program and library for
+ lossless, block-sorting data compression.
+
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+ Please read the WARNING, DISCLAIMER and PATENTS sections in the
+ README file.
+
+ This program is released under the terms of the license contained
+ in the file LICENSE.
+ ------------------------------------------------------------------ */
+
+
+/* CHANGES
+ 0.9.0 -- original version.
+ 0.9.0a/b -- no changes in this file.
+ 0.9.0c -- changed setting of nGroups in sendMTFValues()
+ so as to do a bit better on small files
+*/
+
+#include "bzlib_private.h"
+
+
+/*---------------------------------------------------*/
+/*--- Bit stream I/O ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+void BZ2_bsInitWrite ( EState* s )
+{
+ s->bsLive = 0;
+ s->bsBuff = 0;
+}
+
+
+/*---------------------------------------------------*/
+static
+void bsFinishWrite ( EState* s )
+{
+ while (s->bsLive > 0) {
+ s->zbits[s->numZ] = (UChar)(s->bsBuff >> 24);
+ s->numZ++;
+ s->bsBuff <<= 8;
+ s->bsLive -= 8;
+ }
+}
+
+
+/*---------------------------------------------------*/
+#define bsNEEDW(nz) \
+{ \
+ while (s->bsLive >= 8) { \
+ s->zbits[s->numZ] \
+ = (UChar)(s->bsBuff >> 24); \
+ s->numZ++; \
+ s->bsBuff <<= 8; \
+ s->bsLive -= 8; \
+ } \
+}
+
+
+/*---------------------------------------------------*/
+static
+__inline__
+void bsW ( EState* s, Int32 n, UInt32 v )
+{
+ bsNEEDW ( n );
+ s->bsBuff |= (v << (32 - s->bsLive - n));
+ s->bsLive += n;
+}
+
+
+/*---------------------------------------------------*/
+static
+void bsPutUInt32 ( EState* s, UInt32 u )
+{
+ bsW ( s, 8, (u >> 24) & 0xffL );
+ bsW ( s, 8, (u >> 16) & 0xffL );
+ bsW ( s, 8, (u >> 8) & 0xffL );
+ bsW ( s, 8, u & 0xffL );
+}
+
+
+/*---------------------------------------------------*/
+static
+void bsPutUChar ( EState* s, UChar c )
+{
+ bsW( s, 8, (UInt32)c );
+}
+
+
+/*---------------------------------------------------*/
+/*--- The back end proper ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+static
+void makeMaps_e ( EState* s )
+{
+ Int32 i;
+ s->nInUse = 0;
+ for (i = 0; i < 256; i++)
+ if (s->inUse[i]) {
+ s->unseqToSeq[i] = s->nInUse;
+ s->nInUse++;
+ }
+}
+
+
+/*---------------------------------------------------*/
+static
+void generateMTFValues ( EState* s )
+{
+ UChar yy[256];
+ Int32 i, j;
+ Int32 zPend;
+ Int32 wr;
+ Int32 EOB;
+
+ /*
+ After sorting (eg, here),
+ s->arr1 [ 0 .. s->nblock-1 ] holds sorted order,
+ and
+ ((UChar*)s->arr2) [ 0 .. s->nblock-1 ]
+ holds the original block data.
+
+ The first thing to do is generate the MTF values,
+ and put them in
+ ((UInt16*)s->arr1) [ 0 .. s->nblock-1 ].
+ Because there are strictly fewer or equal MTF values
+ than block values, ptr values in this area are overwritten
+ with MTF values only when they are no longer needed.
+
+ The final compressed bitstream is generated into the
+ area starting at
+ (UChar*) (&((UChar*)s->arr2)[s->nblock])
+
+ These storage aliases are set up in bzCompressInit(),
+ except for the last one, which is arranged in
+ compressBlock().
+ */
+ UInt32* ptr = s->ptr;
+ UChar* block = s->block;
+ UInt16* mtfv = s->mtfv;
+
+ makeMaps_e ( s );
+ EOB = s->nInUse+1;
+
+ for (i = 0; i <= EOB; i++) s->mtfFreq[i] = 0;
+
+ wr = 0;
+ zPend = 0;
+ for (i = 0; i < s->nInUse; i++) yy[i] = (UChar) i;
+
+ for (i = 0; i < s->nblock; i++) {
+ UChar ll_i;
+ AssertD ( wr <= i, "generateMTFValues(1)" );
+ j = ptr[i]-1; if (j < 0) j += s->nblock;
+ ll_i = s->unseqToSeq[block[j]];
+ AssertD ( ll_i < s->nInUse, "generateMTFValues(2a)" );
+
+ if (yy[0] == ll_i) {
+ zPend++;
+ } else {
+
+ if (zPend > 0) {
+ zPend--;
+ while (True) {
+ if (zPend & 1) {
+ mtfv[wr] = BZ_RUNB; wr++;
+ s->mtfFreq[BZ_RUNB]++;
+ } else {
+ mtfv[wr] = BZ_RUNA; wr++;
+ s->mtfFreq[BZ_RUNA]++;
+ }
+ if (zPend < 2) break;
+ zPend = (zPend - 2) / 2;
+ };
+ zPend = 0;
+ }
+ {
+ register UChar rtmp;
+ register UChar* ryy_j;
+ register UChar rll_i;
+ rtmp = yy[1];
+ yy[1] = yy[0];
+ ryy_j = &(yy[1]);
+ rll_i = ll_i;
+ while ( rll_i != rtmp ) {
+ register UChar rtmp2;
+ ryy_j++;
+ rtmp2 = rtmp;
+ rtmp = *ryy_j;
+ *ryy_j = rtmp2;
+ };
+ yy[0] = rtmp;
+ j = ryy_j - &(yy[0]);
+ mtfv[wr] = j+1; wr++; s->mtfFreq[j+1]++;
+ }
+
+ }
+ }
+
+ if (zPend > 0) {
+ zPend--;
+ while (True) {
+ if (zPend & 1) {
+ mtfv[wr] = BZ_RUNB; wr++;
+ s->mtfFreq[BZ_RUNB]++;
+ } else {
+ mtfv[wr] = BZ_RUNA; wr++;
+ s->mtfFreq[BZ_RUNA]++;
+ }
+ if (zPend < 2) break;
+ zPend = (zPend - 2) / 2;
+ };
+ zPend = 0;
+ }
+
+ mtfv[wr] = EOB; wr++; s->mtfFreq[EOB]++;
+
+ s->nMTF = wr;
+}
+
+
+/*---------------------------------------------------*/
+#define BZ_LESSER_ICOST 0
+#define BZ_GREATER_ICOST 15
+
+static
+void sendMTFValues ( EState* s )
+{
+ Int32 v, t, i, j, gs, ge, totc, bt, bc, iter;
+ Int32 nSelectors, alphaSize, minLen, maxLen, selCtr;
+ Int32 nGroups, nBytes;
+
+ /*--
+ UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+ is a global since the decoder also needs it.
+
+ Int32 code[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+ Int32 rfreq[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+ are also globals only used in this proc.
+ Made global to keep stack frame size small.
+ --*/
+
+
+ UInt16 cost[BZ_N_GROUPS];
+ Int32 fave[BZ_N_GROUPS];
+
+ UInt16* mtfv = s->mtfv;
+
+ if (s->verbosity >= 3)
+ VPrintf3( " %d in block, %d after MTF & 1-2 coding, "
+ "%d+2 syms in use\n",
+ s->nblock, s->nMTF, s->nInUse );
+
+ alphaSize = s->nInUse+2;
+ for (t = 0; t < BZ_N_GROUPS; t++)
+ for (v = 0; v < alphaSize; v++)
+ s->len[t][v] = BZ_GREATER_ICOST;
+
+ /*--- Decide how many coding tables to use ---*/
+ AssertH ( s->nMTF > 0, 3001 );
+ if (s->nMTF < 200) nGroups = 2; else
+ if (s->nMTF < 600) nGroups = 3; else
+ if (s->nMTF < 1200) nGroups = 4; else
+ if (s->nMTF < 2400) nGroups = 5; else
+ nGroups = 6;
+
+ /*--- Generate an initial set of coding tables ---*/
+ {
+ Int32 nPart, remF, tFreq, aFreq;
+
+ nPart = nGroups;
+ remF = s->nMTF;
+ gs = 0;
+ while (nPart > 0) {
+ tFreq = remF / nPart;
+ ge = gs-1;
+ aFreq = 0;
+ while (aFreq < tFreq && ge < alphaSize-1) {
+ ge++;
+ aFreq += s->mtfFreq[ge];
+ }
+
+ if (ge > gs
+ && nPart != nGroups && nPart != 1
+ && ((nGroups-nPart) % 2 == 1)) {
+ aFreq -= s->mtfFreq[ge];
+ ge--;
+ }
+
+ if (s->verbosity >= 3)
+ VPrintf5( " initial group %d, [%d .. %d], "
+ "has %d syms (%4.1f%%)\n",
+ nPart, gs, ge, aFreq,
+ (100.0 * (float)aFreq) / (float)(s->nMTF) );
+
+ for (v = 0; v < alphaSize; v++)
+ if (v >= gs && v <= ge)
+ s->len[nPart-1][v] = BZ_LESSER_ICOST; else
+ s->len[nPart-1][v] = BZ_GREATER_ICOST;
+
+ nPart--;
+ gs = ge+1;
+ remF -= aFreq;
+ }
+ }
+
+ /*---
+ Iterate up to BZ_N_ITERS times to improve the tables.
+ ---*/
+ for (iter = 0; iter < BZ_N_ITERS; iter++) {
+
+ for (t = 0; t < nGroups; t++) fave[t] = 0;
+
+ for (t = 0; t < nGroups; t++)
+ for (v = 0; v < alphaSize; v++)
+ s->rfreq[t][v] = 0;
+
+ /*---
+ Set up an auxiliary length table which is used to fast-track
+ the common case (nGroups == 6).
+ ---*/
+ if (nGroups == 6) {
+ for (v = 0; v < alphaSize; v++) {
+ s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v];
+ s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v];
+ s->len_pack[v][2] = (s->len[5][v] << 16) | s->len[4][v];
+ }
+ }
+
+ nSelectors = 0;
+ totc = 0;
+ gs = 0;
+ while (True) {
+
+ /*--- Set group start & end marks. --*/
+ if (gs >= s->nMTF) break;
+ ge = gs + BZ_G_SIZE - 1;
+ if (ge >= s->nMTF) ge = s->nMTF-1;
+
+ /*--
+ Calculate the cost of this group as coded
+ by each of the coding tables.
+ --*/
+ for (t = 0; t < nGroups; t++) cost[t] = 0;
+
+ if (nGroups == 6 && 50 == ge-gs+1) {
+ /*--- fast track the common case ---*/
+ register UInt32 cost01, cost23, cost45;
+ register UInt16 icv;
+ cost01 = cost23 = cost45 = 0;
+
+# define BZ_ITER(nn) \
+ icv = mtfv[gs+(nn)]; \
+ cost01 += s->len_pack[icv][0]; \
+ cost23 += s->len_pack[icv][1]; \
+ cost45 += s->len_pack[icv][2]; \
+
+ BZ_ITER(0); BZ_ITER(1); BZ_ITER(2); BZ_ITER(3); BZ_ITER(4);
+ BZ_ITER(5); BZ_ITER(6); BZ_ITER(7); BZ_ITER(8); BZ_ITER(9);
+ BZ_ITER(10); BZ_ITER(11); BZ_ITER(12); BZ_ITER(13); BZ_ITER(14);
+ BZ_ITER(15); BZ_ITER(16); BZ_ITER(17); BZ_ITER(18); BZ_ITER(19);
+ BZ_ITER(20); BZ_ITER(21); BZ_ITER(22); BZ_ITER(23); BZ_ITER(24);
+ BZ_ITER(25); BZ_ITER(26); BZ_ITER(27); BZ_ITER(28); BZ_ITER(29);
+ BZ_ITER(30); BZ_ITER(31); BZ_ITER(32); BZ_ITER(33); BZ_ITER(34);
+ BZ_ITER(35); BZ_ITER(36); BZ_ITER(37); BZ_ITER(38); BZ_ITER(39);
+ BZ_ITER(40); BZ_ITER(41); BZ_ITER(42); BZ_ITER(43); BZ_ITER(44);
+ BZ_ITER(45); BZ_ITER(46); BZ_ITER(47); BZ_ITER(48); BZ_ITER(49);
+
+# undef BZ_ITER
+
+ cost[0] = cost01 & 0xffff; cost[1] = cost01 >> 16;
+ cost[2] = cost23 & 0xffff; cost[3] = cost23 >> 16;
+ cost[4] = cost45 & 0xffff; cost[5] = cost45 >> 16;
+
+ } else {
+ /*--- slow version which correctly handles all situations ---*/
+ for (i = gs; i <= ge; i++) {
+ UInt16 icv = mtfv[i];
+ for (t = 0; t < nGroups; t++) cost[t] += s->len[t][icv];
+ }
+ }
+
+ /*--
+ Find the coding table which is best for this group,
+ and record its identity in the selector table.
+ --*/
+ bc = 999999999; bt = -1;
+ for (t = 0; t < nGroups; t++)
+ if (cost[t] < bc) { bc = cost[t]; bt = t; };
+ totc += bc;
+ fave[bt]++;
+ s->selector[nSelectors] = bt;
+ nSelectors++;
+
+ /*--
+ Increment the symbol frequencies for the selected table.
+ --*/
+ if (nGroups == 6 && 50 == ge-gs+1) {
+ /*--- fast track the common case ---*/
+
+# define BZ_ITUR(nn) s->rfreq[bt][ mtfv[gs+(nn)] ]++
+
+ BZ_ITUR(0); BZ_ITUR(1); BZ_ITUR(2); BZ_ITUR(3); BZ_ITUR(4);
+ BZ_ITUR(5); BZ_ITUR(6); BZ_ITUR(7); BZ_ITUR(8); BZ_ITUR(9);
+ BZ_ITUR(10); BZ_ITUR(11); BZ_ITUR(12); BZ_ITUR(13); BZ_ITUR(14);
+ BZ_ITUR(15); BZ_ITUR(16); BZ_ITUR(17); BZ_ITUR(18); BZ_ITUR(19);
+ BZ_ITUR(20); BZ_ITUR(21); BZ_ITUR(22); BZ_ITUR(23); BZ_ITUR(24);
+ BZ_ITUR(25); BZ_ITUR(26); BZ_ITUR(27); BZ_ITUR(28); BZ_ITUR(29);
+ BZ_ITUR(30); BZ_ITUR(31); BZ_ITUR(32); BZ_ITUR(33); BZ_ITUR(34);
+ BZ_ITUR(35); BZ_ITUR(36); BZ_ITUR(37); BZ_ITUR(38); BZ_ITUR(39);
+ BZ_ITUR(40); BZ_ITUR(41); BZ_ITUR(42); BZ_ITUR(43); BZ_ITUR(44);
+ BZ_ITUR(45); BZ_ITUR(46); BZ_ITUR(47); BZ_ITUR(48); BZ_ITUR(49);
+
+# undef BZ_ITUR
+
+ } else {
+ /*--- slow version which correctly handles all situations ---*/
+ for (i = gs; i <= ge; i++)
+ s->rfreq[bt][ mtfv[i] ]++;
+ }
+
+ gs = ge+1;
+ }
+ if (s->verbosity >= 3) {
+ VPrintf2 ( " pass %d: size is %d, grp uses are ",
+ iter+1, totc/8 );
+ for (t = 0; t < nGroups; t++)
+ VPrintf1 ( "%d ", fave[t] );
+ VPrintf0 ( "\n" );
+ }
+
+ /*--
+ Recompute the tables based on the accumulated frequencies.
+ --*/
+ /* maxLen was changed from 20 to 17 in bzip2-1.0.3. See
+ comment in huffman.c for details. */
+ for (t = 0; t < nGroups; t++)
+ BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]),
+ alphaSize, 17 /*20*/ );
+ }
+
+
+ AssertH( nGroups < 8, 3002 );
+ AssertH( nSelectors < 32768 &&
+ nSelectors <= (2 + (900000 / BZ_G_SIZE)),
+ 3003 );
+
+
+ /*--- Compute MTF values for the selectors. ---*/
+ {
+ UChar pos[BZ_N_GROUPS], ll_i, tmp2, tmp;
+ for (i = 0; i < nGroups; i++) pos[i] = i;
+ for (i = 0; i < nSelectors; i++) {
+ ll_i = s->selector[i];
+ j = 0;
+ tmp = pos[j];
+ while ( ll_i != tmp ) {
+ j++;
+ tmp2 = tmp;
+ tmp = pos[j];
+ pos[j] = tmp2;
+ };
+ pos[0] = tmp;
+ s->selectorMtf[i] = j;
+ }
+ };
+
+ /*--- Assign actual codes for the tables. --*/
+ for (t = 0; t < nGroups; t++) {
+ minLen = 32;
+ maxLen = 0;
+ for (i = 0; i < alphaSize; i++) {
+ if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
+ if (s->len[t][i] < minLen) minLen = s->len[t][i];
+ }
+ AssertH ( !(maxLen > 17 /*20*/ ), 3004 );
+ AssertH ( !(minLen < 1), 3005 );
+ BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]),
+ minLen, maxLen, alphaSize );
+ }
+
+ /*--- Transmit the mapping table. ---*/
+ {
+ Bool inUse16[16];
+ for (i = 0; i < 16; i++) {
+ inUse16[i] = False;
+ for (j = 0; j < 16; j++)
+ if (s->inUse[i * 16 + j]) inUse16[i] = True;
+ }
+
+ nBytes = s->numZ;
+ for (i = 0; i < 16; i++)
+ if (inUse16[i]) bsW(s,1,1); else bsW(s,1,0);
+
+ for (i = 0; i < 16; i++)
+ if (inUse16[i])
+ for (j = 0; j < 16; j++) {
+ if (s->inUse[i * 16 + j]) bsW(s,1,1); else bsW(s,1,0);
+ }
+
+ if (s->verbosity >= 3)
+ VPrintf1( " bytes: mapping %d, ", s->numZ-nBytes );
+ }
+
+ /*--- Now the selectors. ---*/
+ nBytes = s->numZ;
+ bsW ( s, 3, nGroups );
+ bsW ( s, 15, nSelectors );
+ for (i = 0; i < nSelectors; i++) {
+ for (j = 0; j < s->selectorMtf[i]; j++) bsW(s,1,1);
+ bsW(s,1,0);
+ }
+ if (s->verbosity >= 3)
+ VPrintf1( "selectors %d, ", s->numZ-nBytes );
+
+ /*--- Now the coding tables. ---*/
+ nBytes = s->numZ;
+
+ for (t = 0; t < nGroups; t++) {
+ Int32 curr = s->len[t][0];
+ bsW ( s, 5, curr );
+ for (i = 0; i < alphaSize; i++) {
+ while (curr < s->len[t][i]) { bsW(s,2,2); curr++; /* 10 */ };
+ while (curr > s->len[t][i]) { bsW(s,2,3); curr--; /* 11 */ };
+ bsW ( s, 1, 0 );
+ }
+ }
+
+ if (s->verbosity >= 3)
+ VPrintf1 ( "code lengths %d, ", s->numZ-nBytes );
+
+ /*--- And finally, the block data proper ---*/
+ nBytes = s->numZ;
+ selCtr = 0;
+ gs = 0;
+ while (True) {
+ if (gs >= s->nMTF) break;
+ ge = gs + BZ_G_SIZE - 1;
+ if (ge >= s->nMTF) ge = s->nMTF-1;
+ AssertH ( s->selector[selCtr] < nGroups, 3006 );
+
+ if (nGroups == 6 && 50 == ge-gs+1) {
+ /*--- fast track the common case ---*/
+ UInt16 mtfv_i;
+ UChar* s_len_sel_selCtr
+ = &(s->len[s->selector[selCtr]][0]);
+ Int32* s_code_sel_selCtr
+ = &(s->code[s->selector[selCtr]][0]);
+
+# define BZ_ITAH(nn) \
+ mtfv_i = mtfv[gs+(nn)]; \
+ bsW ( s, \
+ s_len_sel_selCtr[mtfv_i], \
+ s_code_sel_selCtr[mtfv_i] )
+
+ BZ_ITAH(0); BZ_ITAH(1); BZ_ITAH(2); BZ_ITAH(3); BZ_ITAH(4);
+ BZ_ITAH(5); BZ_ITAH(6); BZ_ITAH(7); BZ_ITAH(8); BZ_ITAH(9);
+ BZ_ITAH(10); BZ_ITAH(11); BZ_ITAH(12); BZ_ITAH(13); BZ_ITAH(14);
+ BZ_ITAH(15); BZ_ITAH(16); BZ_ITAH(17); BZ_ITAH(18); BZ_ITAH(19);
+ BZ_ITAH(20); BZ_ITAH(21); BZ_ITAH(22); BZ_ITAH(23); BZ_ITAH(24);
+ BZ_ITAH(25); BZ_ITAH(26); BZ_ITAH(27); BZ_ITAH(28); BZ_ITAH(29);
+ BZ_ITAH(30); BZ_ITAH(31); BZ_ITAH(32); BZ_ITAH(33); BZ_ITAH(34);
+ BZ_ITAH(35); BZ_ITAH(36); BZ_ITAH(37); BZ_ITAH(38); BZ_ITAH(39);
+ BZ_ITAH(40); BZ_ITAH(41); BZ_ITAH(42); BZ_ITAH(43); BZ_ITAH(44);
+ BZ_ITAH(45); BZ_ITAH(46); BZ_ITAH(47); BZ_ITAH(48); BZ_ITAH(49);
+
+# undef BZ_ITAH
+
+ } else {
+ /*--- slow version which correctly handles all situations ---*/
+ for (i = gs; i <= ge; i++) {
+ bsW ( s,
+ s->len [s->selector[selCtr]] [mtfv[i]],
+ s->code [s->selector[selCtr]] [mtfv[i]] );
+ }
+ }
+
+
+ gs = ge+1;
+ selCtr++;
+ }
+ AssertH( selCtr == nSelectors, 3007 );
+
+ if (s->verbosity >= 3)
+ VPrintf1( "codes %d\n", s->numZ-nBytes );
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_compressBlock ( EState* s, Bool is_last_block )
+{
+ if (s->nblock > 0) {
+
+ BZ_FINALISE_CRC ( s->blockCRC );
+ s->combinedCRC = (s->combinedCRC << 1) | (s->combinedCRC >> 31);
+ s->combinedCRC ^= s->blockCRC;
+ if (s->blockNo > 1) s->numZ = 0;
+
+ if (s->verbosity >= 2)
+ VPrintf4( " block %d: crc = 0x%08x, "
+ "combined CRC = 0x%08x, size = %d\n",
+ s->blockNo, s->blockCRC, s->combinedCRC, s->nblock );
+
+ BZ2_blockSort ( s );
+ }
+
+ s->zbits = (UChar*) (&((UChar*)s->arr2)[s->nblock]);
+
+ /*-- If this is the first block, create the stream header. --*/
+ if (s->blockNo == 1) {
+ BZ2_bsInitWrite ( s );
+ bsPutUChar ( s, BZ_HDR_B );
+ bsPutUChar ( s, BZ_HDR_Z );
+ bsPutUChar ( s, BZ_HDR_h );
+ bsPutUChar ( s, (UChar)(BZ_HDR_0 + s->blockSize100k) );
+ }
+
+ if (s->nblock > 0) {
+
+ bsPutUChar ( s, 0x31 ); bsPutUChar ( s, 0x41 );
+ bsPutUChar ( s, 0x59 ); bsPutUChar ( s, 0x26 );
+ bsPutUChar ( s, 0x53 ); bsPutUChar ( s, 0x59 );
+
+ /*-- Now the block's CRC, so it is in a known place. --*/
+ bsPutUInt32 ( s, s->blockCRC );
+
+ /*--
+ Now a single bit indicating (non-)randomisation.
+ As of version 0.9.5, we use a better sorting algorithm
+ which makes randomisation unnecessary. So always set
+ the randomised bit to 'no'. Of course, the decoder
+ still needs to be able to handle randomised blocks
+ so as to maintain backwards compatibility with
+ older versions of bzip2.
+ --*/
+ bsW(s,1,0);
+
+ bsW ( s, 24, s->origPtr );
+ generateMTFValues ( s );
+ sendMTFValues ( s );
+ }
+
+
+ /*-- If this is the last block, add the stream trailer. --*/
+ if (is_last_block) {
+
+ bsPutUChar ( s, 0x17 ); bsPutUChar ( s, 0x72 );
+ bsPutUChar ( s, 0x45 ); bsPutUChar ( s, 0x38 );
+ bsPutUChar ( s, 0x50 ); bsPutUChar ( s, 0x90 );
+ bsPutUInt32 ( s, s->combinedCRC );
+ if (s->verbosity >= 2)
+ VPrintf1( " final combined CRC = 0x%08x\n ", s->combinedCRC );
+ bsFinishWrite ( s );
+ }
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end compress.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/contrib/bzip2/crctable.c b/contrib/bzip2/crctable.c
new file mode 100644
index 000000000000..1fea7e946c57
--- /dev/null
+++ b/contrib/bzip2/crctable.c
@@ -0,0 +1,104 @@
+
+/*-------------------------------------------------------------*/
+/*--- Table for doing CRCs ---*/
+/*--- crctable.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+ This file is part of bzip2/libbzip2, a program and library for
+ lossless, block-sorting data compression.
+
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+ Please read the WARNING, DISCLAIMER and PATENTS sections in the
+ README file.
+
+ This program is released under the terms of the license contained
+ in the file LICENSE.
+ ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+/*--
+ I think this is an implementation of the AUTODIN-II,
+ Ethernet & FDDI 32-bit CRC standard. Vaguely derived
+ from code by Rob Warnock, in Section 51 of the
+ comp.compression FAQ.
+--*/
+
+UInt32 BZ2_crc32Table[256] = {
+
+ /*-- Ugly, innit? --*/
+
+ 0x00000000L, 0x04c11db7L, 0x09823b6eL, 0x0d4326d9L,
+ 0x130476dcL, 0x17c56b6bL, 0x1a864db2L, 0x1e475005L,
+ 0x2608edb8L, 0x22c9f00fL, 0x2f8ad6d6L, 0x2b4bcb61L,
+ 0x350c9b64L, 0x31cd86d3L, 0x3c8ea00aL, 0x384fbdbdL,
+ 0x4c11db70L, 0x48d0c6c7L, 0x4593e01eL, 0x4152fda9L,
+ 0x5f15adacL, 0x5bd4b01bL, 0x569796c2L, 0x52568b75L,
+ 0x6a1936c8L, 0x6ed82b7fL, 0x639b0da6L, 0x675a1011L,
+ 0x791d4014L, 0x7ddc5da3L, 0x709f7b7aL, 0x745e66cdL,
+ 0x9823b6e0L, 0x9ce2ab57L, 0x91a18d8eL, 0x95609039L,
+ 0x8b27c03cL, 0x8fe6dd8bL, 0x82a5fb52L, 0x8664e6e5L,
+ 0xbe2b5b58L, 0xbaea46efL, 0xb7a96036L, 0xb3687d81L,
+ 0xad2f2d84L, 0xa9ee3033L, 0xa4ad16eaL, 0xa06c0b5dL,
+ 0xd4326d90L, 0xd0f37027L, 0xddb056feL, 0xd9714b49L,
+ 0xc7361b4cL, 0xc3f706fbL, 0xceb42022L, 0xca753d95L,
+ 0xf23a8028L, 0xf6fb9d9fL, 0xfbb8bb46L, 0xff79a6f1L,
+ 0xe13ef6f4L, 0xe5ffeb43L, 0xe8bccd9aL, 0xec7dd02dL,
+ 0x34867077L, 0x30476dc0L, 0x3d044b19L, 0x39c556aeL,
+ 0x278206abL, 0x23431b1cL, 0x2e003dc5L, 0x2ac12072L,
+ 0x128e9dcfL, 0x164f8078L, 0x1b0ca6a1L, 0x1fcdbb16L,
+ 0x018aeb13L, 0x054bf6a4L, 0x0808d07dL, 0x0cc9cdcaL,
+ 0x7897ab07L, 0x7c56b6b0L, 0x71159069L, 0x75d48ddeL,
+ 0x6b93dddbL, 0x6f52c06cL, 0x6211e6b5L, 0x66d0fb02L,
+ 0x5e9f46bfL, 0x5a5e5b08L, 0x571d7dd1L, 0x53dc6066L,
+ 0x4d9b3063L, 0x495a2dd4L, 0x44190b0dL, 0x40d816baL,
+ 0xaca5c697L, 0xa864db20L, 0xa527fdf9L, 0xa1e6e04eL,
+ 0xbfa1b04bL, 0xbb60adfcL, 0xb6238b25L, 0xb2e29692L,
+ 0x8aad2b2fL, 0x8e6c3698L, 0x832f1041L, 0x87ee0df6L,
+ 0x99a95df3L, 0x9d684044L, 0x902b669dL, 0x94ea7b2aL,
+ 0xe0b41de7L, 0xe4750050L, 0xe9362689L, 0xedf73b3eL,
+ 0xf3b06b3bL, 0xf771768cL, 0xfa325055L, 0xfef34de2L,
+ 0xc6bcf05fL, 0xc27dede8L, 0xcf3ecb31L, 0xcbffd686L,
+ 0xd5b88683L, 0xd1799b34L, 0xdc3abdedL, 0xd8fba05aL,
+ 0x690ce0eeL, 0x6dcdfd59L, 0x608edb80L, 0x644fc637L,
+ 0x7a089632L, 0x7ec98b85L, 0x738aad5cL, 0x774bb0ebL,
+ 0x4f040d56L, 0x4bc510e1L, 0x46863638L, 0x42472b8fL,
+ 0x5c007b8aL, 0x58c1663dL, 0x558240e4L, 0x51435d53L,
+ 0x251d3b9eL, 0x21dc2629L, 0x2c9f00f0L, 0x285e1d47L,
+ 0x36194d42L, 0x32d850f5L, 0x3f9b762cL, 0x3b5a6b9bL,
+ 0x0315d626L, 0x07d4cb91L, 0x0a97ed48L, 0x0e56f0ffL,
+ 0x1011a0faL, 0x14d0bd4dL, 0x19939b94L, 0x1d528623L,
+ 0xf12f560eL, 0xf5ee4bb9L, 0xf8ad6d60L, 0xfc6c70d7L,
+ 0xe22b20d2L, 0xe6ea3d65L, 0xeba91bbcL, 0xef68060bL,
+ 0xd727bbb6L, 0xd3e6a601L, 0xdea580d8L, 0xda649d6fL,
+ 0xc423cd6aL, 0xc0e2d0ddL, 0xcda1f604L, 0xc960ebb3L,
+ 0xbd3e8d7eL, 0xb9ff90c9L, 0xb4bcb610L, 0xb07daba7L,
+ 0xae3afba2L, 0xaafbe615L, 0xa7b8c0ccL, 0xa379dd7bL,
+ 0x9b3660c6L, 0x9ff77d71L, 0x92b45ba8L, 0x9675461fL,
+ 0x8832161aL, 0x8cf30badL, 0x81b02d74L, 0x857130c3L,
+ 0x5d8a9099L, 0x594b8d2eL, 0x5408abf7L, 0x50c9b640L,
+ 0x4e8ee645L, 0x4a4ffbf2L, 0x470cdd2bL, 0x43cdc09cL,
+ 0x7b827d21L, 0x7f436096L, 0x7200464fL, 0x76c15bf8L,
+ 0x68860bfdL, 0x6c47164aL, 0x61043093L, 0x65c52d24L,
+ 0x119b4be9L, 0x155a565eL, 0x18197087L, 0x1cd86d30L,
+ 0x029f3d35L, 0x065e2082L, 0x0b1d065bL, 0x0fdc1becL,
+ 0x3793a651L, 0x3352bbe6L, 0x3e119d3fL, 0x3ad08088L,
+ 0x2497d08dL, 0x2056cd3aL, 0x2d15ebe3L, 0x29d4f654L,
+ 0xc5a92679L, 0xc1683bceL, 0xcc2b1d17L, 0xc8ea00a0L,
+ 0xd6ad50a5L, 0xd26c4d12L, 0xdf2f6bcbL, 0xdbee767cL,
+ 0xe3a1cbc1L, 0xe760d676L, 0xea23f0afL, 0xeee2ed18L,
+ 0xf0a5bd1dL, 0xf464a0aaL, 0xf9278673L, 0xfde69bc4L,
+ 0x89b8fd09L, 0x8d79e0beL, 0x803ac667L, 0x84fbdbd0L,
+ 0x9abc8bd5L, 0x9e7d9662L, 0x933eb0bbL, 0x97ffad0cL,
+ 0xafb010b1L, 0xab710d06L, 0xa6322bdfL, 0xa2f33668L,
+ 0xbcb4666dL, 0xb8757bdaL, 0xb5365d03L, 0xb1f740b4L
+};
+
+
+/*-------------------------------------------------------------*/
+/*--- end crctable.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/contrib/bzip2/decompress.c b/contrib/bzip2/decompress.c
new file mode 100644
index 000000000000..311f5668f9ae
--- /dev/null
+++ b/contrib/bzip2/decompress.c
@@ -0,0 +1,646 @@
+
+/*-------------------------------------------------------------*/
+/*--- Decompression machinery ---*/
+/*--- decompress.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+ This file is part of bzip2/libbzip2, a program and library for
+ lossless, block-sorting data compression.
+
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+ Please read the WARNING, DISCLAIMER and PATENTS sections in the
+ README file.
+
+ This program is released under the terms of the license contained
+ in the file LICENSE.
+ ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+
+/*---------------------------------------------------*/
+static
+void makeMaps_d ( DState* s )
+{
+ Int32 i;
+ s->nInUse = 0;
+ for (i = 0; i < 256; i++)
+ if (s->inUse[i]) {
+ s->seqToUnseq[s->nInUse] = i;
+ s->nInUse++;
+ }
+}
+
+
+/*---------------------------------------------------*/
+#define RETURN(rrr) \
+ { retVal = rrr; goto save_state_and_return; };
+
+#define GET_BITS(lll,vvv,nnn) \
+ case lll: s->state = lll; \
+ while (True) { \
+ if (s->bsLive >= nnn) { \
+ UInt32 v; \
+ v = (s->bsBuff >> \
+ (s->bsLive-nnn)) & ((1 << nnn)-1); \
+ s->bsLive -= nnn; \
+ vvv = v; \
+ break; \
+ } \
+ if (s->strm->avail_in == 0) RETURN(BZ_OK); \
+ s->bsBuff \
+ = (s->bsBuff << 8) | \
+ ((UInt32) \
+ (*((UChar*)(s->strm->next_in)))); \
+ s->bsLive += 8; \
+ s->strm->next_in++; \
+ s->strm->avail_in--; \
+ s->strm->total_in_lo32++; \
+ if (s->strm->total_in_lo32 == 0) \
+ s->strm->total_in_hi32++; \
+ }
+
+#define GET_UCHAR(lll,uuu) \
+ GET_BITS(lll,uuu,8)
+
+#define GET_BIT(lll,uuu) \
+ GET_BITS(lll,uuu,1)
+
+/*---------------------------------------------------*/
+#define GET_MTF_VAL(label1,label2,lval) \
+{ \
+ if (groupPos == 0) { \
+ groupNo++; \
+ if (groupNo >= nSelectors) \
+ RETURN(BZ_DATA_ERROR); \
+ groupPos = BZ_G_SIZE; \
+ gSel = s->selector[groupNo]; \
+ gMinlen = s->minLens[gSel]; \
+ gLimit = &(s->limit[gSel][0]); \
+ gPerm = &(s->perm[gSel][0]); \
+ gBase = &(s->base[gSel][0]); \
+ } \
+ groupPos--; \
+ zn = gMinlen; \
+ GET_BITS(label1, zvec, zn); \
+ while (1) { \
+ if (zn > 20 /* the longest code */) \
+ RETURN(BZ_DATA_ERROR); \
+ if (zvec <= gLimit[zn]) break; \
+ zn++; \
+ GET_BIT(label2, zj); \
+ zvec = (zvec << 1) | zj; \
+ }; \
+ if (zvec - gBase[zn] < 0 \
+ || zvec - gBase[zn] >= BZ_MAX_ALPHA_SIZE) \
+ RETURN(BZ_DATA_ERROR); \
+ lval = gPerm[zvec - gBase[zn]]; \
+}
+
+
+/*---------------------------------------------------*/
+Int32 BZ2_decompress ( DState* s )
+{
+ UChar uc;
+ Int32 retVal;
+ Int32 minLen, maxLen;
+ bz_stream* strm = s->strm;
+
+ /* stuff that needs to be saved/restored */
+ Int32 i;
+ Int32 j;
+ Int32 t;
+ Int32 alphaSize;
+ Int32 nGroups;
+ Int32 nSelectors;
+ Int32 EOB;
+ Int32 groupNo;
+ Int32 groupPos;
+ Int32 nextSym;
+ Int32 nblockMAX;
+ Int32 nblock;
+ Int32 es;
+ Int32 N;
+ Int32 curr;
+ Int32 zt;
+ Int32 zn;
+ Int32 zvec;
+ Int32 zj;
+ Int32 gSel;
+ Int32 gMinlen;
+ Int32* gLimit;
+ Int32* gBase;
+ Int32* gPerm;
+
+ if (s->state == BZ_X_MAGIC_1) {
+ /*initialise the save area*/
+ s->save_i = 0;
+ s->save_j = 0;
+ s->save_t = 0;
+ s->save_alphaSize = 0;
+ s->save_nGroups = 0;
+ s->save_nSelectors = 0;
+ s->save_EOB = 0;
+ s->save_groupNo = 0;
+ s->save_groupPos = 0;
+ s->save_nextSym = 0;
+ s->save_nblockMAX = 0;
+ s->save_nblock = 0;
+ s->save_es = 0;
+ s->save_N = 0;
+ s->save_curr = 0;
+ s->save_zt = 0;
+ s->save_zn = 0;
+ s->save_zvec = 0;
+ s->save_zj = 0;
+ s->save_gSel = 0;
+ s->save_gMinlen = 0;
+ s->save_gLimit = NULL;
+ s->save_gBase = NULL;
+ s->save_gPerm = NULL;
+ }
+
+ /*restore from the save area*/
+ i = s->save_i;
+ j = s->save_j;
+ t = s->save_t;
+ alphaSize = s->save_alphaSize;
+ nGroups = s->save_nGroups;
+ nSelectors = s->save_nSelectors;
+ EOB = s->save_EOB;
+ groupNo = s->save_groupNo;
+ groupPos = s->save_groupPos;
+ nextSym = s->save_nextSym;
+ nblockMAX = s->save_nblockMAX;
+ nblock = s->save_nblock;
+ es = s->save_es;
+ N = s->save_N;
+ curr = s->save_curr;
+ zt = s->save_zt;
+ zn = s->save_zn;
+ zvec = s->save_zvec;
+ zj = s->save_zj;
+ gSel = s->save_gSel;
+ gMinlen = s->save_gMinlen;
+ gLimit = s->save_gLimit;
+ gBase = s->save_gBase;
+ gPerm = s->save_gPerm;
+
+ retVal = BZ_OK;
+
+ switch (s->state) {
+
+ GET_UCHAR(BZ_X_MAGIC_1, uc);
+ if (uc != BZ_HDR_B) RETURN(BZ_DATA_ERROR_MAGIC);
+
+ GET_UCHAR(BZ_X_MAGIC_2, uc);
+ if (uc != BZ_HDR_Z) RETURN(BZ_DATA_ERROR_MAGIC);
+
+ GET_UCHAR(BZ_X_MAGIC_3, uc)
+ if (uc != BZ_HDR_h) RETURN(BZ_DATA_ERROR_MAGIC);
+
+ GET_BITS(BZ_X_MAGIC_4, s->blockSize100k, 8)
+ if (s->blockSize100k < (BZ_HDR_0 + 1) ||
+ s->blockSize100k > (BZ_HDR_0 + 9)) RETURN(BZ_DATA_ERROR_MAGIC);
+ s->blockSize100k -= BZ_HDR_0;
+
+ if (s->smallDecompress) {
+ s->ll16 = BZALLOC( s->blockSize100k * 100000 * sizeof(UInt16) );
+ s->ll4 = BZALLOC(
+ ((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar)
+ );
+ if (s->ll16 == NULL || s->ll4 == NULL) RETURN(BZ_MEM_ERROR);
+ } else {
+ s->tt = BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) );
+ if (s->tt == NULL) RETURN(BZ_MEM_ERROR);
+ }
+
+ GET_UCHAR(BZ_X_BLKHDR_1, uc);
+
+ if (uc == 0x17) goto endhdr_2;
+ if (uc != 0x31) RETURN(BZ_DATA_ERROR);
+ GET_UCHAR(BZ_X_BLKHDR_2, uc);
+ if (uc != 0x41) RETURN(BZ_DATA_ERROR);
+ GET_UCHAR(BZ_X_BLKHDR_3, uc);
+ if (uc != 0x59) RETURN(BZ_DATA_ERROR);
+ GET_UCHAR(BZ_X_BLKHDR_4, uc);
+ if (uc != 0x26) RETURN(BZ_DATA_ERROR);
+ GET_UCHAR(BZ_X_BLKHDR_5, uc);
+ if (uc != 0x53) RETURN(BZ_DATA_ERROR);
+ GET_UCHAR(BZ_X_BLKHDR_6, uc);
+ if (uc != 0x59) RETURN(BZ_DATA_ERROR);
+
+ s->currBlockNo++;
+ if (s->verbosity >= 2)
+ VPrintf1 ( "\n [%d: huff+mtf ", s->currBlockNo );
+
+ s->storedBlockCRC = 0;
+ GET_UCHAR(BZ_X_BCRC_1, uc);
+ s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+ GET_UCHAR(BZ_X_BCRC_2, uc);
+ s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+ GET_UCHAR(BZ_X_BCRC_3, uc);
+ s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+ GET_UCHAR(BZ_X_BCRC_4, uc);
+ s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+
+ GET_BITS(BZ_X_RANDBIT, s->blockRandomised, 1);
+
+ s->origPtr = 0;
+ GET_UCHAR(BZ_X_ORIGPTR_1, uc);
+ s->origPtr = (s->origPtr << 8) | ((Int32)uc);
+ GET_UCHAR(BZ_X_ORIGPTR_2, uc);
+ s->origPtr = (s->origPtr << 8) | ((Int32)uc);
+ GET_UCHAR(BZ_X_ORIGPTR_3, uc);
+ s->origPtr = (s->origPtr << 8) | ((Int32)uc);
+
+ if (s->origPtr < 0)
+ RETURN(BZ_DATA_ERROR);
+ if (s->origPtr > 10 + 100000*s->blockSize100k)
+ RETURN(BZ_DATA_ERROR);
+
+ /*--- Receive the mapping table ---*/
+ for (i = 0; i < 16; i++) {
+ GET_BIT(BZ_X_MAPPING_1, uc);
+ if (uc == 1)
+ s->inUse16[i] = True; else
+ s->inUse16[i] = False;
+ }
+
+ for (i = 0; i < 256; i++) s->inUse[i] = False;
+
+ for (i = 0; i < 16; i++)
+ if (s->inUse16[i])
+ for (j = 0; j < 16; j++) {
+ GET_BIT(BZ_X_MAPPING_2, uc);
+ if (uc == 1) s->inUse[i * 16 + j] = True;
+ }
+ makeMaps_d ( s );
+ if (s->nInUse == 0) RETURN(BZ_DATA_ERROR);
+ alphaSize = s->nInUse+2;
+
+ /*--- Now the selectors ---*/
+ GET_BITS(BZ_X_SELECTOR_1, nGroups, 3);
+ if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR);
+ GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15);
+ if (nSelectors < 1) RETURN(BZ_DATA_ERROR);
+ for (i = 0; i < nSelectors; i++) {
+ j = 0;
+ while (True) {
+ GET_BIT(BZ_X_SELECTOR_3, uc);
+ if (uc == 0) break;
+ j++;
+ if (j >= nGroups) RETURN(BZ_DATA_ERROR);
+ }
+ s->selectorMtf[i] = j;
+ }
+
+ /*--- Undo the MTF values for the selectors. ---*/
+ {
+ UChar pos[BZ_N_GROUPS], tmp, v;
+ for (v = 0; v < nGroups; v++) pos[v] = v;
+
+ for (i = 0; i < nSelectors; i++) {
+ v = s->selectorMtf[i];
+ tmp = pos[v];
+ while (v > 0) { pos[v] = pos[v-1]; v--; }
+ pos[0] = tmp;
+ s->selector[i] = tmp;
+ }
+ }
+
+ /*--- Now the coding tables ---*/
+ for (t = 0; t < nGroups; t++) {
+ GET_BITS(BZ_X_CODING_1, curr, 5);
+ for (i = 0; i < alphaSize; i++) {
+ while (True) {
+ if (curr < 1 || curr > 20) RETURN(BZ_DATA_ERROR);
+ GET_BIT(BZ_X_CODING_2, uc);
+ if (uc == 0) break;
+ GET_BIT(BZ_X_CODING_3, uc);
+ if (uc == 0) curr++; else curr--;
+ }
+ s->len[t][i] = curr;
+ }
+ }
+
+ /*--- Create the Huffman decoding tables ---*/
+ for (t = 0; t < nGroups; t++) {
+ minLen = 32;
+ maxLen = 0;
+ for (i = 0; i < alphaSize; i++) {
+ if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
+ if (s->len[t][i] < minLen) minLen = s->len[t][i];
+ }
+ BZ2_hbCreateDecodeTables (
+ &(s->limit[t][0]),
+ &(s->base[t][0]),
+ &(s->perm[t][0]),
+ &(s->len[t][0]),
+ minLen, maxLen, alphaSize
+ );
+ s->minLens[t] = minLen;
+ }
+
+ /*--- Now the MTF values ---*/
+
+ EOB = s->nInUse+1;
+ nblockMAX = 100000 * s->blockSize100k;
+ groupNo = -1;
+ groupPos = 0;
+
+ for (i = 0; i <= 255; i++) s->unzftab[i] = 0;
+
+ /*-- MTF init --*/
+ {
+ Int32 ii, jj, kk;
+ kk = MTFA_SIZE-1;
+ for (ii = 256 / MTFL_SIZE - 1; ii >= 0; ii--) {
+ for (jj = MTFL_SIZE-1; jj >= 0; jj--) {
+ s->mtfa[kk] = (UChar)(ii * MTFL_SIZE + jj);
+ kk--;
+ }
+ s->mtfbase[ii] = kk + 1;
+ }
+ }
+ /*-- end MTF init --*/
+
+ nblock = 0;
+ GET_MTF_VAL(BZ_X_MTF_1, BZ_X_MTF_2, nextSym);
+
+ while (True) {
+
+ if (nextSym == EOB) break;
+
+ if (nextSym == BZ_RUNA || nextSym == BZ_RUNB) {
+
+ es = -1;
+ N = 1;
+ do {
+ /* Check that N doesn't get too big, so that es doesn't
+ go negative. The maximum value that can be
+ RUNA/RUNB encoded is equal to the block size (post
+ the initial RLE), viz, 900k, so bounding N at 2
+ million should guard against overflow without
+ rejecting any legitimate inputs. */
+ if (N >= 2*1024*1024) RETURN(BZ_DATA_ERROR);
+ if (nextSym == BZ_RUNA) es = es + (0+1) * N; else
+ if (nextSym == BZ_RUNB) es = es + (1+1) * N;
+ N = N * 2;
+ GET_MTF_VAL(BZ_X_MTF_3, BZ_X_MTF_4, nextSym);
+ }
+ while (nextSym == BZ_RUNA || nextSym == BZ_RUNB);
+
+ es++;
+ uc = s->seqToUnseq[ s->mtfa[s->mtfbase[0]] ];
+ s->unzftab[uc] += es;
+
+ if (s->smallDecompress)
+ while (es > 0) {
+ if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
+ s->ll16[nblock] = (UInt16)uc;
+ nblock++;
+ es--;
+ }
+ else
+ while (es > 0) {
+ if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
+ s->tt[nblock] = (UInt32)uc;
+ nblock++;
+ es--;
+ };
+
+ continue;
+
+ } else {
+
+ if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
+
+ /*-- uc = MTF ( nextSym-1 ) --*/
+ {
+ Int32 ii, jj, kk, pp, lno, off;
+ UInt32 nn;
+ nn = (UInt32)(nextSym - 1);
+
+ if (nn < MTFL_SIZE) {
+ /* avoid general-case expense */
+ pp = s->mtfbase[0];
+ uc = s->mtfa[pp+nn];
+ while (nn > 3) {
+ Int32 z = pp+nn;
+ s->mtfa[(z) ] = s->mtfa[(z)-1];
+ s->mtfa[(z)-1] = s->mtfa[(z)-2];
+ s->mtfa[(z)-2] = s->mtfa[(z)-3];
+ s->mtfa[(z)-3] = s->mtfa[(z)-4];
+ nn -= 4;
+ }
+ while (nn > 0) {
+ s->mtfa[(pp+nn)] = s->mtfa[(pp+nn)-1]; nn--;
+ };
+ s->mtfa[pp] = uc;
+ } else {
+ /* general case */
+ lno = nn / MTFL_SIZE;
+ off = nn % MTFL_SIZE;
+ pp = s->mtfbase[lno] + off;
+ uc = s->mtfa[pp];
+ while (pp > s->mtfbase[lno]) {
+ s->mtfa[pp] = s->mtfa[pp-1]; pp--;
+ };
+ s->mtfbase[lno]++;
+ while (lno > 0) {
+ s->mtfbase[lno]--;
+ s->mtfa[s->mtfbase[lno]]
+ = s->mtfa[s->mtfbase[lno-1] + MTFL_SIZE - 1];
+ lno--;
+ }
+ s->mtfbase[0]--;
+ s->mtfa[s->mtfbase[0]] = uc;
+ if (s->mtfbase[0] == 0) {
+ kk = MTFA_SIZE-1;
+ for (ii = 256 / MTFL_SIZE-1; ii >= 0; ii--) {
+ for (jj = MTFL_SIZE-1; jj >= 0; jj--) {
+ s->mtfa[kk] = s->mtfa[s->mtfbase[ii] + jj];
+ kk--;
+ }
+ s->mtfbase[ii] = kk + 1;
+ }
+ }
+ }
+ }
+ /*-- end uc = MTF ( nextSym-1 ) --*/
+
+ s->unzftab[s->seqToUnseq[uc]]++;
+ if (s->smallDecompress)
+ s->ll16[nblock] = (UInt16)(s->seqToUnseq[uc]); else
+ s->tt[nblock] = (UInt32)(s->seqToUnseq[uc]);
+ nblock++;
+
+ GET_MTF_VAL(BZ_X_MTF_5, BZ_X_MTF_6, nextSym);
+ continue;
+ }
+ }
+
+ /* Now we know what nblock is, we can do a better sanity
+ check on s->origPtr.
+ */
+ if (s->origPtr < 0 || s->origPtr >= nblock)
+ RETURN(BZ_DATA_ERROR);
+
+ /*-- Set up cftab to facilitate generation of T^(-1) --*/
+ /* Check: unzftab entries in range. */
+ for (i = 0; i <= 255; i++) {
+ if (s->unzftab[i] < 0 || s->unzftab[i] > nblock)
+ RETURN(BZ_DATA_ERROR);
+ }
+ /* Actually generate cftab. */
+ s->cftab[0] = 0;
+ for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1];
+ for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1];
+ /* Check: cftab entries in range. */
+ for (i = 0; i <= 256; i++) {
+ if (s->cftab[i] < 0 || s->cftab[i] > nblock) {
+ /* s->cftab[i] can legitimately be == nblock */
+ RETURN(BZ_DATA_ERROR);
+ }
+ }
+ /* Check: cftab entries non-descending. */
+ for (i = 1; i <= 256; i++) {
+ if (s->cftab[i-1] > s->cftab[i]) {
+ RETURN(BZ_DATA_ERROR);
+ }
+ }
+
+ s->state_out_len = 0;
+ s->state_out_ch = 0;
+ BZ_INITIALISE_CRC ( s->calculatedBlockCRC );
+ s->state = BZ_X_OUTPUT;
+ if (s->verbosity >= 2) VPrintf0 ( "rt+rld" );
+
+ if (s->smallDecompress) {
+
+ /*-- Make a copy of cftab, used in generation of T --*/
+ for (i = 0; i <= 256; i++) s->cftabCopy[i] = s->cftab[i];
+
+ /*-- compute the T vector --*/
+ for (i = 0; i < nblock; i++) {
+ uc = (UChar)(s->ll16[i]);
+ SET_LL(i, s->cftabCopy[uc]);
+ s->cftabCopy[uc]++;
+ }
+
+ /*-- Compute T^(-1) by pointer reversal on T --*/
+ i = s->origPtr;
+ j = GET_LL(i);
+ do {
+ Int32 tmp = GET_LL(j);
+ SET_LL(j, i);
+ i = j;
+ j = tmp;
+ }
+ while (i != s->origPtr);
+
+ s->tPos = s->origPtr;
+ s->nblock_used = 0;
+ if (s->blockRandomised) {
+ BZ_RAND_INIT_MASK;
+ BZ_GET_SMALL(s->k0); s->nblock_used++;
+ BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK;
+ } else {
+ BZ_GET_SMALL(s->k0); s->nblock_used++;
+ }
+
+ } else {
+
+ /*-- compute the T^(-1) vector --*/
+ for (i = 0; i < nblock; i++) {
+ uc = (UChar)(s->tt[i] & 0xff);
+ s->tt[s->cftab[uc]] |= (i << 8);
+ s->cftab[uc]++;
+ }
+
+ s->tPos = s->tt[s->origPtr] >> 8;
+ s->nblock_used = 0;
+ if (s->blockRandomised) {
+ BZ_RAND_INIT_MASK;
+ BZ_GET_FAST(s->k0); s->nblock_used++;
+ BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK;
+ } else {
+ BZ_GET_FAST(s->k0); s->nblock_used++;
+ }
+
+ }
+
+ RETURN(BZ_OK);
+
+
+
+ endhdr_2:
+
+ GET_UCHAR(BZ_X_ENDHDR_2, uc);
+ if (uc != 0x72) RETURN(BZ_DATA_ERROR);
+ GET_UCHAR(BZ_X_ENDHDR_3, uc);
+ if (uc != 0x45) RETURN(BZ_DATA_ERROR);
+ GET_UCHAR(BZ_X_ENDHDR_4, uc);
+ if (uc != 0x38) RETURN(BZ_DATA_ERROR);
+ GET_UCHAR(BZ_X_ENDHDR_5, uc);
+ if (uc != 0x50) RETURN(BZ_DATA_ERROR);
+ GET_UCHAR(BZ_X_ENDHDR_6, uc);
+ if (uc != 0x90) RETURN(BZ_DATA_ERROR);
+
+ s->storedCombinedCRC = 0;
+ GET_UCHAR(BZ_X_CCRC_1, uc);
+ s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+ GET_UCHAR(BZ_X_CCRC_2, uc);
+ s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+ GET_UCHAR(BZ_X_CCRC_3, uc);
+ s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+ GET_UCHAR(BZ_X_CCRC_4, uc);
+ s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+
+ s->state = BZ_X_IDLE;
+ RETURN(BZ_STREAM_END);
+
+ default: AssertH ( False, 4001 );
+ }
+
+ AssertH ( False, 4002 );
+
+ save_state_and_return:
+
+ s->save_i = i;
+ s->save_j = j;
+ s->save_t = t;
+ s->save_alphaSize = alphaSize;
+ s->save_nGroups = nGroups;
+ s->save_nSelectors = nSelectors;
+ s->save_EOB = EOB;
+ s->save_groupNo = groupNo;
+ s->save_groupPos = groupPos;
+ s->save_nextSym = nextSym;
+ s->save_nblockMAX = nblockMAX;
+ s->save_nblock = nblock;
+ s->save_es = es;
+ s->save_N = N;
+ s->save_curr = curr;
+ s->save_zt = zt;
+ s->save_zn = zn;
+ s->save_zvec = zvec;
+ s->save_zj = zj;
+ s->save_gSel = gSel;
+ s->save_gMinlen = gMinlen;
+ s->save_gLimit = gLimit;
+ s->save_gBase = gBase;
+ s->save_gPerm = gPerm;
+
+ return retVal;
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end decompress.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/contrib/bzip2/dlltest.c b/contrib/bzip2/dlltest.c
new file mode 100644
index 000000000000..03fa14620e5f
--- /dev/null
+++ b/contrib/bzip2/dlltest.c
@@ -0,0 +1,175 @@
+/*
+ minibz2
+ libbz2.dll test program.
+ by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
+ This file is Public Domain. Welcome any email to me.
+
+ usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]
+*/
+
+#define BZ_IMPORT
+#include <stdio.h>
+#include <stdlib.h>
+#include "bzlib.h"
+#ifdef _WIN32
+#include <io.h>
+#endif
+
+
+#ifdef _WIN32
+
+#define BZ2_LIBNAME "libbz2-1.0.2.DLL"
+
+#include <windows.h>
+static int BZ2DLLLoaded = 0;
+static HINSTANCE BZ2DLLhLib;
+int BZ2DLLLoadLibrary(void)
+{
+ HINSTANCE hLib;
+
+ if(BZ2DLLLoaded==1){return 0;}
+ hLib=LoadLibrary(BZ2_LIBNAME);
+ if(hLib == NULL){
+ fprintf(stderr,"Can't load %s\n",BZ2_LIBNAME);
+ return -1;
+ }
+ BZ2_bzlibVersion=GetProcAddress(hLib,"BZ2_bzlibVersion");
+ BZ2_bzopen=GetProcAddress(hLib,"BZ2_bzopen");
+ BZ2_bzdopen=GetProcAddress(hLib,"BZ2_bzdopen");
+ BZ2_bzread=GetProcAddress(hLib,"BZ2_bzread");
+ BZ2_bzwrite=GetProcAddress(hLib,"BZ2_bzwrite");
+ BZ2_bzflush=GetProcAddress(hLib,"BZ2_bzflush");
+ BZ2_bzclose=GetProcAddress(hLib,"BZ2_bzclose");
+ BZ2_bzerror=GetProcAddress(hLib,"BZ2_bzerror");
+
+ if (!BZ2_bzlibVersion || !BZ2_bzopen || !BZ2_bzdopen
+ || !BZ2_bzread || !BZ2_bzwrite || !BZ2_bzflush
+ || !BZ2_bzclose || !BZ2_bzerror) {
+ fprintf(stderr,"GetProcAddress failed.\n");
+ return -1;
+ }
+ BZ2DLLLoaded=1;
+ BZ2DLLhLib=hLib;
+ return 0;
+
+}
+int BZ2DLLFreeLibrary(void)
+{
+ if(BZ2DLLLoaded==0){return 0;}
+ FreeLibrary(BZ2DLLhLib);
+ BZ2DLLLoaded=0;
+}
+#endif /* WIN32 */
+
+void usage(void)
+{
+ puts("usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]");
+}
+
+int main(int argc,char *argv[])
+{
+ int decompress = 0;
+ int level = 9;
+ char *fn_r = NULL;
+ char *fn_w = NULL;
+
+#ifdef _WIN32
+ if(BZ2DLLLoadLibrary()<0){
+ fprintf(stderr,"Loading of %s failed. Giving up.\n", BZ2_LIBNAME);
+ exit(1);
+ }
+ printf("Loading of %s succeeded. Library version is %s.\n",
+ BZ2_LIBNAME, BZ2_bzlibVersion() );
+#endif
+ while(++argv,--argc){
+ if(**argv =='-' || **argv=='/'){
+ char *p;
+
+ for(p=*argv+1;*p;p++){
+ if(*p=='d'){
+ decompress = 1;
+ }else if('1'<=*p && *p<='9'){
+ level = *p - '0';
+ }else{
+ usage();
+ exit(1);
+ }
+ }
+ }else{
+ break;
+ }
+ }
+ if(argc>=1){
+ fn_r = *argv;
+ argc--;argv++;
+ }else{
+ fn_r = NULL;
+ }
+ if(argc>=1){
+ fn_w = *argv;
+ argc--;argv++;
+ }else{
+ fn_w = NULL;
+ }
+ {
+ int len;
+ char buff[0x1000];
+ char mode[10];
+
+ if(decompress){
+ BZFILE *BZ2fp_r = NULL;
+ FILE *fp_w = NULL;
+
+ if(fn_w){
+ if((fp_w = fopen(fn_w,"wb"))==NULL){
+ printf("can't open [%s]\n",fn_w);
+ perror("reason:");
+ exit(1);
+ }
+ }else{
+ fp_w = stdout;
+ }
+ if((fn_r == NULL && (BZ2fp_r = BZ2_bzdopen(fileno(stdin),"rb"))==NULL)
+ || (fn_r != NULL && (BZ2fp_r = BZ2_bzopen(fn_r,"rb"))==NULL)){
+ printf("can't bz2openstream\n");
+ exit(1);
+ }
+ while((len=BZ2_bzread(BZ2fp_r,buff,0x1000))>0){
+ fwrite(buff,1,len,fp_w);
+ }
+ BZ2_bzclose(BZ2fp_r);
+ if(fp_w != stdout) fclose(fp_w);
+ }else{
+ BZFILE *BZ2fp_w = NULL;
+ FILE *fp_r = NULL;
+
+ if(fn_r){
+ if((fp_r = fopen(fn_r,"rb"))==NULL){
+ printf("can't open [%s]\n",fn_r);
+ perror("reason:");
+ exit(1);
+ }
+ }else{
+ fp_r = stdin;
+ }
+ mode[0]='w';
+ mode[1] = '0' + level;
+ mode[2] = '\0';
+
+ if((fn_w == NULL && (BZ2fp_w = BZ2_bzdopen(fileno(stdout),mode))==NULL)
+ || (fn_w !=NULL && (BZ2fp_w = BZ2_bzopen(fn_w,mode))==NULL)){
+ printf("can't bz2openstream\n");
+ exit(1);
+ }
+ while((len=fread(buff,1,0x1000,fp_r))>0){
+ BZ2_bzwrite(BZ2fp_w,buff,len);
+ }
+ BZ2_bzclose(BZ2fp_w);
+ if(fp_r!=stdin)fclose(fp_r);
+ }
+ }
+#ifdef _WIN32
+ BZ2DLLFreeLibrary();
+#endif
+ return 0;
+}
diff --git a/contrib/bzip2/huffman.c b/contrib/bzip2/huffman.c
new file mode 100644
index 000000000000..2283fdbc5a10
--- /dev/null
+++ b/contrib/bzip2/huffman.c
@@ -0,0 +1,205 @@
+
+/*-------------------------------------------------------------*/
+/*--- Huffman coding low-level stuff ---*/
+/*--- huffman.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+ This file is part of bzip2/libbzip2, a program and library for
+ lossless, block-sorting data compression.
+
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+ Please read the WARNING, DISCLAIMER and PATENTS sections in the
+ README file.
+
+ This program is released under the terms of the license contained
+ in the file LICENSE.
+ ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+/*---------------------------------------------------*/
+#define WEIGHTOF(zz0) ((zz0) & 0xffffff00)
+#define DEPTHOF(zz1) ((zz1) & 0x000000ff)
+#define MYMAX(zz2,zz3) ((zz2) > (zz3) ? (zz2) : (zz3))
+
+#define ADDWEIGHTS(zw1,zw2) \
+ (WEIGHTOF(zw1)+WEIGHTOF(zw2)) | \
+ (1 + MYMAX(DEPTHOF(zw1),DEPTHOF(zw2)))
+
+#define UPHEAP(z) \
+{ \
+ Int32 zz, tmp; \
+ zz = z; tmp = heap[zz]; \
+ while (weight[tmp] < weight[heap[zz >> 1]]) { \
+ heap[zz] = heap[zz >> 1]; \
+ zz >>= 1; \
+ } \
+ heap[zz] = tmp; \
+}
+
+#define DOWNHEAP(z) \
+{ \
+ Int32 zz, yy, tmp; \
+ zz = z; tmp = heap[zz]; \
+ while (True) { \
+ yy = zz << 1; \
+ if (yy > nHeap) break; \
+ if (yy < nHeap && \
+ weight[heap[yy+1]] < weight[heap[yy]]) \
+ yy++; \
+ if (weight[tmp] < weight[heap[yy]]) break; \
+ heap[zz] = heap[yy]; \
+ zz = yy; \
+ } \
+ heap[zz] = tmp; \
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_hbMakeCodeLengths ( UChar *len,
+ Int32 *freq,
+ Int32 alphaSize,
+ Int32 maxLen )
+{
+ /*--
+ Nodes and heap entries run from 1. Entry 0
+ for both the heap and nodes is a sentinel.
+ --*/
+ Int32 nNodes, nHeap, n1, n2, i, j, k;
+ Bool tooLong;
+
+ Int32 heap [ BZ_MAX_ALPHA_SIZE + 2 ];
+ Int32 weight [ BZ_MAX_ALPHA_SIZE * 2 ];
+ Int32 parent [ BZ_MAX_ALPHA_SIZE * 2 ];
+
+ for (i = 0; i < alphaSize; i++)
+ weight[i+1] = (freq[i] == 0 ? 1 : freq[i]) << 8;
+
+ while (True) {
+
+ nNodes = alphaSize;
+ nHeap = 0;
+
+ heap[0] = 0;
+ weight[0] = 0;
+ parent[0] = -2;
+
+ for (i = 1; i <= alphaSize; i++) {
+ parent[i] = -1;
+ nHeap++;
+ heap[nHeap] = i;
+ UPHEAP(nHeap);
+ }
+
+ AssertH( nHeap < (BZ_MAX_ALPHA_SIZE+2), 2001 );
+
+ while (nHeap > 1) {
+ n1 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1);
+ n2 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1);
+ nNodes++;
+ parent[n1] = parent[n2] = nNodes;
+ weight[nNodes] = ADDWEIGHTS(weight[n1], weight[n2]);
+ parent[nNodes] = -1;
+ nHeap++;
+ heap[nHeap] = nNodes;
+ UPHEAP(nHeap);
+ }
+
+ AssertH( nNodes < (BZ_MAX_ALPHA_SIZE * 2), 2002 );
+
+ tooLong = False;
+ for (i = 1; i <= alphaSize; i++) {
+ j = 0;
+ k = i;
+ while (parent[k] >= 0) { k = parent[k]; j++; }
+ len[i-1] = j;
+ if (j > maxLen) tooLong = True;
+ }
+
+ if (! tooLong) break;
+
+ /* 17 Oct 04: keep-going condition for the following loop used
+ to be 'i < alphaSize', which missed the last element,
+ theoretically leading to the possibility of the compressor
+ looping. However, this count-scaling step is only needed if
+ one of the generated Huffman code words is longer than
+ maxLen, which up to and including version 1.0.2 was 20 bits,
+ which is extremely unlikely. In version 1.0.3 maxLen was
+ changed to 17 bits, which has minimal effect on compression
+ ratio, but does mean this scaling step is used from time to
+ time, enough to verify that it works.
+
+ This means that bzip2-1.0.3 and later will only produce
+ Huffman codes with a maximum length of 17 bits. However, in
+ order to preserve backwards compatibility with bitstreams
+ produced by versions pre-1.0.3, the decompressor must still
+ handle lengths of up to 20. */
+
+ for (i = 1; i <= alphaSize; i++) {
+ j = weight[i] >> 8;
+ j = 1 + (j / 2);
+ weight[i] = j << 8;
+ }
+ }
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_hbAssignCodes ( Int32 *code,
+ UChar *length,
+ Int32 minLen,
+ Int32 maxLen,
+ Int32 alphaSize )
+{
+ Int32 n, vec, i;
+
+ vec = 0;
+ for (n = minLen; n <= maxLen; n++) {
+ for (i = 0; i < alphaSize; i++)
+ if (length[i] == n) { code[i] = vec; vec++; };
+ vec <<= 1;
+ }
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_hbCreateDecodeTables ( Int32 *limit,
+ Int32 *base,
+ Int32 *perm,
+ UChar *length,
+ Int32 minLen,
+ Int32 maxLen,
+ Int32 alphaSize )
+{
+ Int32 pp, i, j, vec;
+
+ pp = 0;
+ for (i = minLen; i <= maxLen; i++)
+ for (j = 0; j < alphaSize; j++)
+ if (length[j] == i) { perm[pp] = j; pp++; };
+
+ for (i = 0; i < BZ_MAX_CODE_LEN; i++) base[i] = 0;
+ for (i = 0; i < alphaSize; i++) base[length[i]+1]++;
+
+ for (i = 1; i < BZ_MAX_CODE_LEN; i++) base[i] += base[i-1];
+
+ for (i = 0; i < BZ_MAX_CODE_LEN; i++) limit[i] = 0;
+ vec = 0;
+
+ for (i = minLen; i <= maxLen; i++) {
+ vec += (base[i+1] - base[i]);
+ limit[i] = vec-1;
+ vec <<= 1;
+ }
+ for (i = minLen + 1; i <= maxLen; i++)
+ base[i] = ((limit[i-1] + 1) << 1) - base[i];
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end huffman.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/contrib/bzip2/libbz2.def b/contrib/bzip2/libbz2.def
new file mode 100644
index 000000000000..2dc0dd891dc6
--- /dev/null
+++ b/contrib/bzip2/libbz2.def
@@ -0,0 +1,27 @@
+LIBRARY LIBBZ2
+DESCRIPTION "libbzip2: library for data compression"
+EXPORTS
+ BZ2_bzCompressInit
+ BZ2_bzCompress
+ BZ2_bzCompressEnd
+ BZ2_bzDecompressInit
+ BZ2_bzDecompress
+ BZ2_bzDecompressEnd
+ BZ2_bzReadOpen
+ BZ2_bzReadClose
+ BZ2_bzReadGetUnused
+ BZ2_bzRead
+ BZ2_bzWriteOpen
+ BZ2_bzWrite
+ BZ2_bzWriteClose
+ BZ2_bzWriteClose64
+ BZ2_bzBuffToBuffCompress
+ BZ2_bzBuffToBuffDecompress
+ BZ2_bzlibVersion
+ BZ2_bzopen
+ BZ2_bzdopen
+ BZ2_bzread
+ BZ2_bzwrite
+ BZ2_bzflush
+ BZ2_bzclose
+ BZ2_bzerror
diff --git a/contrib/bzip2/makefile.msc b/contrib/bzip2/makefile.msc
new file mode 100644
index 000000000000..799a18a5f1a7
--- /dev/null
+++ b/contrib/bzip2/makefile.msc
@@ -0,0 +1,63 @@
+# Makefile for Microsoft Visual C++ 6.0
+# usage: nmake -f makefile.msc
+# K.M. Syring (syring@gsf.de)
+# Fixed up by JRS for bzip2-0.9.5d release.
+
+CC=cl
+CFLAGS= -DWIN32 -MD -Ox -D_FILE_OFFSET_BITS=64 -nologo
+
+OBJS= blocksort.obj \
+ huffman.obj \
+ crctable.obj \
+ randtable.obj \
+ compress.obj \
+ decompress.obj \
+ bzlib.obj
+
+all: lib bzip2 test
+
+bzip2: lib
+ $(CC) $(CFLAGS) -o bzip2 bzip2.c libbz2.lib setargv.obj
+ $(CC) $(CFLAGS) -o bzip2recover bzip2recover.c
+
+lib: $(OBJS)
+ lib /out:libbz2.lib $(OBJS)
+
+test: bzip2
+ type words1
+ .\\bzip2 -1 < sample1.ref > sample1.rb2
+ .\\bzip2 -2 < sample2.ref > sample2.rb2
+ .\\bzip2 -3 < sample3.ref > sample3.rb2
+ .\\bzip2 -d < sample1.bz2 > sample1.tst
+ .\\bzip2 -d < sample2.bz2 > sample2.tst
+ .\\bzip2 -ds < sample3.bz2 > sample3.tst
+ @echo All six of the fc's should find no differences.
+ @echo If fc finds an error on sample3.bz2, this could be
+ @echo because WinZip's 'TAR file smart CR/LF conversion'
+ @echo is too clever for its own good. Disable this option.
+ @echo The correct size for sample3.ref is 120,244. If it
+ @echo is 150,251, WinZip has messed it up.
+ fc sample1.bz2 sample1.rb2
+ fc sample2.bz2 sample2.rb2
+ fc sample3.bz2 sample3.rb2
+ fc sample1.tst sample1.ref
+ fc sample2.tst sample2.ref
+ fc sample3.tst sample3.ref
+
+
+
+clean:
+ del *.obj
+ del libbz2.lib
+ del bzip2.exe
+ del bzip2recover.exe
+ del sample1.rb2
+ del sample2.rb2
+ del sample3.rb2
+ del sample1.tst
+ del sample2.tst
+ del sample3.tst
+
+.c.obj:
+ $(CC) $(CFLAGS) -c $*.c -o $*.obj
+
diff --git a/contrib/bzip2/randtable.c b/contrib/bzip2/randtable.c
new file mode 100644
index 000000000000..6d6245990610
--- /dev/null
+++ b/contrib/bzip2/randtable.c
@@ -0,0 +1,84 @@
+
+/*-------------------------------------------------------------*/
+/*--- Table for randomising repetitive blocks ---*/
+/*--- randtable.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+ This file is part of bzip2/libbzip2, a program and library for
+ lossless, block-sorting data compression.
+
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+ Please read the WARNING, DISCLAIMER and PATENTS sections in the
+ README file.
+
+ This program is released under the terms of the license contained
+ in the file LICENSE.
+ ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+
+/*---------------------------------------------*/
+Int32 BZ2_rNums[512] = {
+ 619, 720, 127, 481, 931, 816, 813, 233, 566, 247,
+ 985, 724, 205, 454, 863, 491, 741, 242, 949, 214,
+ 733, 859, 335, 708, 621, 574, 73, 654, 730, 472,
+ 419, 436, 278, 496, 867, 210, 399, 680, 480, 51,
+ 878, 465, 811, 169, 869, 675, 611, 697, 867, 561,
+ 862, 687, 507, 283, 482, 129, 807, 591, 733, 623,
+ 150, 238, 59, 379, 684, 877, 625, 169, 643, 105,
+ 170, 607, 520, 932, 727, 476, 693, 425, 174, 647,
+ 73, 122, 335, 530, 442, 853, 695, 249, 445, 515,
+ 909, 545, 703, 919, 874, 474, 882, 500, 594, 612,
+ 641, 801, 220, 162, 819, 984, 589, 513, 495, 799,
+ 161, 604, 958, 533, 221, 400, 386, 867, 600, 782,
+ 382, 596, 414, 171, 516, 375, 682, 485, 911, 276,
+ 98, 553, 163, 354, 666, 933, 424, 341, 533, 870,
+ 227, 730, 475, 186, 263, 647, 537, 686, 600, 224,
+ 469, 68, 770, 919, 190, 373, 294, 822, 808, 206,
+ 184, 943, 795, 384, 383, 461, 404, 758, 839, 887,
+ 715, 67, 618, 276, 204, 918, 873, 777, 604, 560,
+ 951, 160, 578, 722, 79, 804, 96, 409, 713, 940,
+ 652, 934, 970, 447, 318, 353, 859, 672, 112, 785,
+ 645, 863, 803, 350, 139, 93, 354, 99, 820, 908,
+ 609, 772, 154, 274, 580, 184, 79, 626, 630, 742,
+ 653, 282, 762, 623, 680, 81, 927, 626, 789, 125,
+ 411, 521, 938, 300, 821, 78, 343, 175, 128, 250,
+ 170, 774, 972, 275, 999, 639, 495, 78, 352, 126,
+ 857, 956, 358, 619, 580, 124, 737, 594, 701, 612,
+ 669, 112, 134, 694, 363, 992, 809, 743, 168, 974,
+ 944, 375, 748, 52, 600, 747, 642, 182, 862, 81,
+ 344, 805, 988, 739, 511, 655, 814, 334, 249, 515,
+ 897, 955, 664, 981, 649, 113, 974, 459, 893, 228,
+ 433, 837, 553, 268, 926, 240, 102, 654, 459, 51,
+ 686, 754, 806, 760, 493, 403, 415, 394, 687, 700,
+ 946, 670, 656, 610, 738, 392, 760, 799, 887, 653,
+ 978, 321, 576, 617, 626, 502, 894, 679, 243, 440,
+ 680, 879, 194, 572, 640, 724, 926, 56, 204, 700,
+ 707, 151, 457, 449, 797, 195, 791, 558, 945, 679,
+ 297, 59, 87, 824, 713, 663, 412, 693, 342, 606,
+ 134, 108, 571, 364, 631, 212, 174, 643, 304, 329,
+ 343, 97, 430, 751, 497, 314, 983, 374, 822, 928,
+ 140, 206, 73, 263, 980, 736, 876, 478, 430, 305,
+ 170, 514, 364, 692, 829, 82, 855, 953, 676, 246,
+ 369, 970, 294, 750, 807, 827, 150, 790, 288, 923,
+ 804, 378, 215, 828, 592, 281, 565, 555, 710, 82,
+ 896, 831, 547, 261, 524, 462, 293, 465, 502, 56,
+ 661, 821, 976, 991, 658, 869, 905, 758, 745, 193,
+ 768, 550, 608, 933, 378, 286, 215, 979, 792, 961,
+ 61, 688, 793, 644, 986, 403, 106, 366, 905, 644,
+ 372, 567, 466, 434, 645, 210, 389, 550, 919, 135,
+ 780, 773, 635, 389, 707, 100, 626, 958, 165, 504,
+ 920, 176, 193, 713, 857, 265, 203, 50, 668, 108,
+ 645, 990, 626, 197, 510, 357, 358, 850, 858, 364,
+ 936, 638
+};
+
+
+/*-------------------------------------------------------------*/
+/*--- end randtable.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/contrib/bzip2/sample1.bz2.uu b/contrib/bzip2/sample1.bz2.uu
new file mode 100644
index 000000000000..544568031af1
--- /dev/null
+++ b/contrib/bzip2/sample1.bz2.uu
@@ -0,0 +1,722 @@
+begin 644 sample1.bz2
+M0EIH,3%!62936<SQM:4`OJ;_____________________________________
+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
+F"+`&FNP%5J%=[MCO,A9%D0D'L8&%51TCE#9?_B[DBG"A(9GC:TH`
+`
+end
diff --git a/contrib/bzip2/sample1.ref.gz.uu b/contrib/bzip2/sample1.ref.gz.uu
new file mode 100644
index 000000000000..6c36f44d14df
--- /dev/null
+++ b/contrib/bzip2/sample1.ref.gz.uu
@@ -0,0 +1,850 @@
+begin 644 sample1.ref.gz
+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
+.WXO\S_\")"$UH(B!`0``
+`
+end
diff --git a/contrib/bzip2/sample2.bz2.uu b/contrib/bzip2/sample2.bz2.uu
new file mode 100644
index 000000000000..b0610ea63c91
--- /dev/null
+++ b/contrib/bzip2/sample2.bz2.uu
@@ -0,0 +1,1642 @@
+begin 644 sample2.bz2
+M0EIH,C%!629367PQR6$!@_U_____________________________________
+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
+6"B*@22E%*JXT83_Q=R13A0D'@N8^0```
+`
+end
diff --git a/contrib/bzip2/sample2.ref.gz.uu b/contrib/bzip2/sample2.ref.gz.uu
new file mode 100644
index 000000000000..fd78424a8c31
--- /dev/null
+++ b/contrib/bzip2/sample2.ref.gz.uu
@@ -0,0 +1,1934 @@
+begin 644 sample2.ref.gz
+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
+:_"7R1KQ6_6F)?LXA;3_[W_\`7L0<'W0]`P``
+`
+end
diff --git a/contrib/bzip2/sample3.bz2.uu b/contrib/bzip2/sample3.bz2.uu
new file mode 100644
index 000000000000..a2378a3cc17a
--- /dev/null
+++ b/contrib/bzip2/sample3.bz2.uu
@@ -0,0 +1,9 @@
+begin 644 sample3.bz2
+M0EIH,S%!62936;K-,\D`.K;?@``00&4P```@!``_[][@,`#:VT-3`IDGZIFF
+MHT](;4T&@H]-0R`!HT`BD%'I--&)H&C32IEOWIG15$$195,\[7SNV^DXEM\G
+M0\ZRK;7W3[@]P7B>KPBU87N[XI5>!/TRY1JZE9UN&;!6ZH,60K?O=56)J;1@
+MAMLR":K)YTDE0*\.``1`$""QGH`*"(N^C.#]!@VC7I&-,2#+KPCP^J.FQY.Z
+MF8"5*83K]+=A;.A$:#-(KY':7&T/24RT:&EIR)5"L%+S'``4$1985NZ$GE_%
+*W)%.%"0NLTSR0```
+`
+end
diff --git a/contrib/bzip2/sample3.ref.gz.uu b/contrib/bzip2/sample3.ref.gz.uu
new file mode 100644
index 000000000000..8552ba60f267
--- /dev/null
+++ b/contrib/bzip2/sample3.ref.gz.uu
@@ -0,0 +1,11 @@
+begin 644 sample3.ref.gz
+M'XL("%<.FT4"`W-A;7!L93,N<F5F`.W/08[;,`P%T+U/P>4$"`)T;M%]+Z!F
+MZ-B(8P>2@S:W'R7HNB=XBP=1$#\E_9KF%N.\9/0U_YXSO^;ULCSC]U9[<8KX
+M.<9S>_2>]>M5U);+.-0LK[Z8]V/<ERPMX^/'(?9R[8/V&.MVBUO&/I7]G3Z7
+M-5H9<WD.ET>V%G]>)_N44;/ML8WO^OV.5I[M&*7?]O%YB)9YC7O=QAZ:M[4L
+MPY3+_30,]];?UD,UHW3K%N.COO9]0#V7ML_G/OM6ZK7%O/;.?__LT<=E`@``
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+C``````````````````````````````#@/[X!M4V7,;35`0``
+`
+end
diff --git a/contrib/bzip2/spewG.c b/contrib/bzip2/spewG.c
new file mode 100644
index 000000000000..14a364938d4c
--- /dev/null
+++ b/contrib/bzip2/spewG.c
@@ -0,0 +1,54 @@
+
+/* spew out a thoroughly gigantic file designed so that bzip2
+ can compress it reasonably rapidly. This is to help test
+ support for large files (> 2GB) in a reasonable amount of time.
+ I suggest you use the undocumented --exponential option to
+ bzip2 when compressing the resulting file; this saves a bit of
+ time. Note: *don't* bother with --exponential when compressing
+ Real Files; it'll just waste a lot of CPU time :-)
+ (but is otherwise harmless).
+*/
+
+/* ------------------------------------------------------------------
+ This file is part of bzip2/libbzip2, a program and library for
+ lossless, block-sorting data compression.
+
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+ Please read the WARNING, DISCLAIMER and PATENTS sections in the
+ README file.
+
+ This program is released under the terms of the license contained
+ in the file LICENSE.
+ ------------------------------------------------------------------ */
+
+
+#define _FILE_OFFSET_BITS 64
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/* The number of megabytes of junk to spew out (roughly) */
+#define MEGABYTES 5000
+
+#define N_BUF 1000000
+char buf[N_BUF];
+
+int main ( int argc, char** argv )
+{
+ int ii, kk, p;
+ srandom(1);
+ setbuffer ( stdout, buf, N_BUF );
+ for (kk = 0; kk < MEGABYTES * 515; kk+=3) {
+ p = 25+random()%50;
+ for (ii = 0; ii < p; ii++)
+ printf ( "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" );
+ for (ii = 0; ii < p-1; ii++)
+ printf ( "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" );
+ for (ii = 0; ii < p+1; ii++)
+ printf ( "ccccccccccccccccccccccccccccccccccccc" );
+ }
+ fflush(stdout);
+ return 0;
+}
diff --git a/contrib/bzip2/unzcrash.c b/contrib/bzip2/unzcrash.c
new file mode 100644
index 000000000000..7041da51c989
--- /dev/null
+++ b/contrib/bzip2/unzcrash.c
@@ -0,0 +1,141 @@
+
+/* A test program written to test robustness to decompression of
+ corrupted data. Usage is
+ unzcrash filename
+ and the program will read the specified file, compress it (in memory),
+ and then repeatedly decompress it, each time with a different bit of
+ the compressed data inverted, so as to test all possible one-bit errors.
+ This should not cause any invalid memory accesses. If it does,
+ I want to know about it!
+
+ PS. As you can see from the above description, the process is
+ incredibly slow. A file of size eg 5KB will cause it to run for
+ many hours.
+*/
+
+/* ------------------------------------------------------------------
+ This file is part of bzip2/libbzip2, a program and library for
+ lossless, block-sorting data compression.
+
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+ Please read the WARNING, DISCLAIMER and PATENTS sections in the
+ README file.
+
+ This program is released under the terms of the license contained
+ in the file LICENSE.
+ ------------------------------------------------------------------ */
+
+
+#include <stdio.h>
+#include <assert.h>
+#include "bzlib.h"
+
+#define M_BLOCK 1000000
+
+typedef unsigned char uchar;
+
+#define M_BLOCK_OUT (M_BLOCK + 1000000)
+uchar inbuf[M_BLOCK];
+uchar outbuf[M_BLOCK_OUT];
+uchar zbuf[M_BLOCK + 600 + (M_BLOCK / 100)];
+
+int nIn, nOut, nZ;
+
+static char *bzerrorstrings[] = {
+ "OK"
+ ,"SEQUENCE_ERROR"
+ ,"PARAM_ERROR"
+ ,"MEM_ERROR"
+ ,"DATA_ERROR"
+ ,"DATA_ERROR_MAGIC"
+ ,"IO_ERROR"
+ ,"UNEXPECTED_EOF"
+ ,"OUTBUFF_FULL"
+ ,"???" /* for future */
+ ,"???" /* for future */
+ ,"???" /* for future */
+ ,"???" /* for future */
+ ,"???" /* for future */
+ ,"???" /* for future */
+};
+
+void flip_bit ( int bit )
+{
+ int byteno = bit / 8;
+ int bitno = bit % 8;
+ uchar mask = 1 << bitno;
+ //fprintf ( stderr, "(byte %d bit %d mask %d)",
+ // byteno, bitno, (int)mask );
+ zbuf[byteno] ^= mask;
+}
+
+int main ( int argc, char** argv )
+{
+ FILE* f;
+ int r;
+ int bit;
+ int i;
+
+ if (argc != 2) {
+ fprintf ( stderr, "usage: unzcrash filename\n" );
+ return 1;
+ }
+
+ f = fopen ( argv[1], "r" );
+ if (!f) {
+ fprintf ( stderr, "unzcrash: can't open %s\n", argv[1] );
+ return 1;
+ }
+
+ nIn = fread ( inbuf, 1, M_BLOCK, f );
+ fprintf ( stderr, "%d bytes read\n", nIn );
+
+ nZ = M_BLOCK;
+ r = BZ2_bzBuffToBuffCompress (
+ zbuf, &nZ, inbuf, nIn, 9, 0, 30 );
+
+ assert (r == BZ_OK);
+ fprintf ( stderr, "%d after compression\n", nZ );
+
+ for (bit = 0; bit < nZ*8; bit++) {
+ fprintf ( stderr, "bit %d ", bit );
+ flip_bit ( bit );
+ nOut = M_BLOCK_OUT;
+ r = BZ2_bzBuffToBuffDecompress (
+ outbuf, &nOut, zbuf, nZ, 0, 0 );
+ fprintf ( stderr, " %d %s ", r, bzerrorstrings[-r] );
+
+ if (r != BZ_OK) {
+ fprintf ( stderr, "\n" );
+ } else {
+ if (nOut != nIn) {
+ fprintf(stderr, "nIn/nOut mismatch %d %d\n", nIn, nOut );
+ return 1;
+ } else {
+ for (i = 0; i < nOut; i++)
+ if (inbuf[i] != outbuf[i]) {
+ fprintf(stderr, "mismatch at %d\n", i );
+ return 1;
+ }
+ if (i == nOut) fprintf(stderr, "really ok!\n" );
+ }
+ }
+
+ flip_bit ( bit );
+ }
+
+#if 0
+ assert (nOut == nIn);
+ for (i = 0; i < nOut; i++) {
+ if (inbuf[i] != outbuf[i]) {
+ fprintf ( stderr, "difference at %d !\n", i );
+ return 1;
+ }
+ }
+#endif
+
+ fprintf ( stderr, "all ok\n" );
+ return 0;
+}
diff --git a/contrib/bzip2/words0 b/contrib/bzip2/words0
new file mode 100644
index 000000000000..fbf442ad6bfa
--- /dev/null
+++ b/contrib/bzip2/words0
@@ -0,0 +1,9 @@
+
+If compilation produces errors, or a large number of warnings,
+please read README.COMPILATION.PROBLEMS -- you might be able to
+adjust the flags in this Makefile to improve matters.
+
+Also in README.COMPILATION.PROBLEMS are some hints that may help
+if your build produces an executable which is unable to correctly
+handle so-called 'large files' -- files of size 2GB or more.
+
diff --git a/contrib/bzip2/words1 b/contrib/bzip2/words1
new file mode 100644
index 000000000000..2e83de9f083f
--- /dev/null
+++ b/contrib/bzip2/words1
@@ -0,0 +1,4 @@
+
+Doing 6 tests (3 compress, 3 uncompress) ...
+If there's a problem, things might stop at this point.
+
diff --git a/contrib/bzip2/words2 b/contrib/bzip2/words2
new file mode 100644
index 000000000000..caddcf422662
--- /dev/null
+++ b/contrib/bzip2/words2
@@ -0,0 +1,5 @@
+
+Checking test results. If any of the four "cmp"s which follow
+report any differences, something is wrong. If you can't easily
+figure out what, please let me know (jseward@bzip.org).
+
diff --git a/contrib/bzip2/words3 b/contrib/bzip2/words3
new file mode 100644
index 000000000000..6972669906db
--- /dev/null
+++ b/contrib/bzip2/words3
@@ -0,0 +1,30 @@
+
+If you got this far and the 'cmp's didn't complain, it looks
+like you're in business.
+
+To install in /usr/local/bin, /usr/local/lib, /usr/local/man and
+/usr/local/include, type
+
+ make install
+
+To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type
+
+ make install PREFIX=/xxx/yyy
+
+If you are (justifiably) paranoid and want to see what 'make install'
+is going to do, you can first do
+
+ make -n install or
+ make -n install PREFIX=/xxx/yyy respectively.
+
+The -n instructs make to show the commands it would execute, but
+not actually execute them.
+
+Instructions for use are in the preformatted manual page, in the file
+bzip2.txt. For more detailed documentation, read the full manual.
+It is available in Postscript form (manual.ps), PDF form (manual.pdf),
+and HTML form (manual.html).
+
+You can also do "bzip2 --help" to see some helpful information.
+"bzip2 -L" displays the software license.
+