import NetBSD bzip2 and libbz2
This commit is contained in:
parent
349a158056
commit
79bfef9aab
83 changed files with 37046 additions and 2236 deletions
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
SUBDIR= aal add_route arp ash at autil awk \
|
SUBDIR= aal add_route arp ash at autil awk \
|
||||||
backup badblocks banner basename binpackage \
|
backup badblocks banner basename binpackage \
|
||||||
binpackages bzip2 bzip2recover cal calendar \
|
binpackages cal calendar \
|
||||||
cat cawf cd cdprobe checkhier chmem \
|
cat cawf cd cdprobe checkhier chmem \
|
||||||
chmod chown chroot ci cksum cleantmp clear cmp co \
|
chmod chown chroot ci cksum cleantmp clear cmp co \
|
||||||
comm compress cp crc cron crontab cut date \
|
comm compress cp crc cron crontab cut date \
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
.include <bsd.own.mk>
|
|
||||||
|
|
||||||
PROG= bzip2
|
|
||||||
DPADD+= ${LIBBZ2}
|
|
||||||
LDADD+= -lbz2
|
|
||||||
|
|
||||||
MLINKS+= bzip2.1 bunzip2.1\
|
|
||||||
bzip2.1 bzcat.1\
|
|
||||||
bzip2.1 bzip2recover.1
|
|
||||||
|
|
||||||
LINKS+= ${BINDIR}/bzip2 ${BINDIR}/bunzip2
|
|
||||||
LINKS+= ${BINDIR}/bzip2 ${BINDIR}/bzcat
|
|
||||||
|
|
||||||
.include <bsd.prog.mk>
|
|
|
@ -1,44 +0,0 @@
|
||||||
|
|
||||||
# This Makefile builds a shared version of the library,
|
|
||||||
# libbz2.so.1.0.3, 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.
|
|
||||||
|
|
||||||
SHELL=/bin/sh
|
|
||||||
CC=gcc
|
|
||||||
BIGFILES=-D_FILE_OFFSET_BITS=64
|
|
||||||
CFLAGS=-fpic -fPIC -Wall -Winline -O -g
|
|
||||||
|
|
||||||
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.3 $(OBJS)
|
|
||||||
$(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.3
|
|
||||||
rm -f libbz2.so.1.0
|
|
||||||
ln -s libbz2.so.1.0.3 libbz2.so.1.0
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f $(OBJS) bzip2.o libbz2.so.1.0.3 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
|
|
|
@ -1,34 +0,0 @@
|
||||||
|
|
||||||
Y2K status of bzip2 and libbzip2, versions 0.1, 0.9.0 and 0.9.5
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Informally speaking:
|
|
||||||
bzip2 is a compression program built on top of libbzip2,
|
|
||||||
a library which does the real work of compression and
|
|
||||||
decompression. As far as I am aware, libbzip2 does not have
|
|
||||||
any date-related code at all.
|
|
||||||
|
|
||||||
bzip2 itself copies dates from source to destination files
|
|
||||||
when compressing or decompressing, using the 'stat' and 'utime'
|
|
||||||
UNIX system calls. It doesn't examine, manipulate or store the
|
|
||||||
dates in any way. So as far as I can see, there shouldn't be any
|
|
||||||
problem with bzip2 providing 'stat' and 'utime' work correctly
|
|
||||||
on your system.
|
|
||||||
|
|
||||||
On non-unix platforms (those for which BZ_UNIX in bzip2.c is
|
|
||||||
not set to 1), bzip2 doesn't even do the date copying.
|
|
||||||
|
|
||||||
Overall, informally speaking, I don't think bzip2 or libbzip2
|
|
||||||
have a Y2K problem.
|
|
||||||
|
|
||||||
Formally speaking:
|
|
||||||
I am not prepared to offer you any assurance whatsoever
|
|
||||||
regarding Y2K issues in my software. You alone assume the
|
|
||||||
entire risk of using the software. The disclaimer of liability
|
|
||||||
in the LICENSE file in the bzip2 source distribution continues
|
|
||||||
to apply on this issue as with every other issue pertaining
|
|
||||||
to the software.
|
|
||||||
|
|
||||||
Julian Seward
|
|
||||||
Cambridge, UK
|
|
||||||
25 August 1999
|
|
|
@ -1,466 +0,0 @@
|
||||||
.PU
|
|
||||||
.TH bzip2 1
|
|
||||||
.SH NAME
|
|
||||||
bzip2, bunzip2, smallbunzip2 \- a block-sorting file compressor, v1.0.3
|
|
||||||
.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 smallbunzip2
|
|
||||||
.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.
|
|
||||||
.I smallbunzip2
|
|
||||||
is identical to
|
|
||||||
.I bunzip2
|
|
||||||
on modern MINIX, but used to use less memory
|
|
||||||
before virtual memory was introduced.
|
|
||||||
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.3 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 and 1.0.2, 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.
|
|
|
@ -1,399 +0,0 @@
|
||||||
bzip2(1) bzip2(1)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
NNAAMMEE
|
|
||||||
bzip2, bunzip2 − a block‐sorting file compressor, v1.0.3
|
|
||||||
bzcat − decompresses files to stdout
|
|
||||||
bzip2recover − recovers data from damaged bzip2 files
|
|
||||||
|
|
||||||
|
|
||||||
SSYYNNOOPPSSIISS
|
|
||||||
bbzziipp22 [ −−ccddffkkqqssttvvzzVVLL112233445566778899 ] [ _f_i_l_e_n_a_m_e_s _._._. ]
|
|
||||||
bbuunnzziipp22 [ −−ffkkvvssVVLL ] [ _f_i_l_e_n_a_m_e_s _._._. ]
|
|
||||||
bbzzccaatt [ −−ss ] [ _f_i_l_e_n_a_m_e_s _._._. ]
|
|
||||||
bbzziipp22rreeccoovveerr _f_i_l_e_n_a_m_e
|
|
||||||
|
|
||||||
|
|
||||||
DDEESSCCRRIIPPTTIIOONN
|
|
||||||
_b_z_i_p_2 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 sta
|
|
||||||
tistical compressors.
|
|
||||||
|
|
||||||
The command‐line options are deliberately very similar to
|
|
||||||
those of _G_N_U _g_z_i_p_, but they are not identical.
|
|
||||||
|
|
||||||
_b_z_i_p_2 expects a list of file names to accompany the com
|
|
||||||
mand‐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, per
|
|
||||||
missions, and, when possible, ownership as the correspond
|
|
||||||
ing 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 preserv
|
|
||||||
ing original file names, permissions, ownerships or dates
|
|
||||||
in filesystems which lack these concepts, or have serious
|
|
||||||
file name length restrictions, such as MS‐DOS.
|
|
||||||
|
|
||||||
_b_z_i_p_2 and _b_u_n_z_i_p_2 will by default not overwrite existing
|
|
||||||
files. If you want this to happen, specify the −f flag.
|
|
||||||
|
|
||||||
If no file names are specified, _b_z_i_p_2 compresses from
|
|
||||||
standard input to standard output. In this case, _b_z_i_p_2
|
|
||||||
will decline to write compressed output to a terminal, as
|
|
||||||
this would be entirely incomprehensible and therefore
|
|
||||||
pointless.
|
|
||||||
|
|
||||||
_b_u_n_z_i_p_2 (or _b_z_i_p_2 _−_d_) decompresses all specified files.
|
|
||||||
Files which were not created by _b_z_i_p_2 will be detected and
|
|
||||||
ignored, and a warning issued. _b_z_i_p_2 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,
|
|
||||||
_._b_z_2_, _._b_z_, _._t_b_z_2 or _._t_b_z_, _b_z_i_p_2 complains that it cannot
|
|
||||||
guess the name of the original file, and uses the original
|
|
||||||
name with _._o_u_t appended.
|
|
||||||
|
|
||||||
As with compression, supplying no filenames causes decom
|
|
||||||
pression from standard input to standard output.
|
|
||||||
|
|
||||||
_b_u_n_z_i_p_2 will correctly decompress a file which is the con
|
|
||||||
catenation 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 com
|
|
||||||
pressed and decompressed like this. The resulting outputs
|
|
||||||
are fed sequentially to stdout. Compression of multiple
|
|
||||||
files in this manner generates a stream containing multi
|
|
||||||
ple compressed file representations. Such a stream can be
|
|
||||||
decompressed correctly only by _b_z_i_p_2 version 0.9.0 or
|
|
||||||
later. Earlier versions of _b_z_i_p_2 will stop after decom
|
|
||||||
pressing the first file in the stream.
|
|
||||||
|
|
||||||
_b_z_c_a_t (or _b_z_i_p_2 _‐_d_c_) decompresses all specified files to
|
|
||||||
the standard output.
|
|
||||||
|
|
||||||
_b_z_i_p_2 will read arguments from the environment variables
|
|
||||||
_B_Z_I_P_2 and _B_Z_I_P_, 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, _b_z_i_p_2 uses 32‐bit
|
|
||||||
CRCs to make sure that the decompressed version of a file
|
|
||||||
is identical to the original. This guards against corrup
|
|
||||||
tion of the compressed data, and against undetected bugs
|
|
||||||
in _b_z_i_p_2 (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
|
|
||||||
_b_z_i_p_2_r_e_c_o_v_e_r 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 _b_z_i_p_2 to panic.
|
|
||||||
|
|
||||||
|
|
||||||
OOPPTTIIOONNSS
|
|
||||||
−−cc ‐‐‐‐ssttddoouutt
|
|
||||||
Compress or decompress to standard output.
|
|
||||||
|
|
||||||
−−dd ‐‐‐‐ddeeccoommpprreessss
|
|
||||||
Force decompression. _b_z_i_p_2_, _b_u_n_z_i_p_2 and _b_z_c_a_t 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 _b_z_i_p_2 to decompress.
|
|
||||||
|
|
||||||
−−zz ‐‐‐‐ccoommpprreessss
|
|
||||||
The complement to −d: forces compression,
|
|
||||||
regardless of the invocation name.
|
|
||||||
|
|
||||||
−−tt ‐‐‐‐tteesstt
|
|
||||||
Check integrity of the specified file(s), but don’t
|
|
||||||
decompress them. This really performs a trial
|
|
||||||
decompression and throws away the result.
|
|
||||||
|
|
||||||
−−ff ‐‐‐‐ffoorrccee
|
|
||||||
Force overwrite of output files. Normally, _b_z_i_p_2
|
|
||||||
will not overwrite existing output files. Also
|
|
||||||
forces _b_z_i_p_2 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.
|
|
||||||
|
|
||||||
−−kk ‐‐‐‐kkeeeepp
|
|
||||||
Keep (don’t delete) input files during compression
|
|
||||||
or decompression.
|
|
||||||
|
|
||||||
−−ss ‐‐‐‐ssmmaallll
|
|
||||||
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.
|
|
||||||
|
|
||||||
−−qq ‐‐‐‐qquuiieett
|
|
||||||
Suppress non‐essential warning messages. Messages
|
|
||||||
pertaining to I/O errors and other critical events
|
|
||||||
will not be suppressed.
|
|
||||||
|
|
||||||
−−vv ‐‐‐‐vveerrbboossee
|
|
||||||
Verbose mode ‐‐ show the compression ratio for each
|
|
||||||
file processed. Further −v’s increase the ver
|
|
||||||
bosity level, spewing out lots of information which
|
|
||||||
is primarily of interest for diagnostic purposes.
|
|
||||||
|
|
||||||
−−LL ‐‐‐‐lliicceennssee ‐‐VV ‐‐‐‐vveerrssiioonn
|
|
||||||
Display the software version, license terms and
|
|
||||||
conditions.
|
|
||||||
|
|
||||||
−−11 ((oorr −−−−ffaasstt)) ttoo −−99 ((oorr −−−−bbeesstt))
|
|
||||||
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 signifi
|
|
||||||
cantly faster. And −−best merely selects the
|
|
||||||
default behaviour.
|
|
||||||
|
|
||||||
−−‐‐ Treats all subsequent arguments as file names, even
|
|
||||||
if they start with a dash. This is so you can han
|
|
||||||
dle files with names beginning with a dash, for
|
|
||||||
example: bzip2 −‐ −myfilename.
|
|
||||||
|
|
||||||
−−‐‐rreeppeettiittiivvee‐‐ffaasstt ‐‐‐‐rreeppeettiittiivvee‐‐bbeesstt
|
|
||||||
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 ver
|
|
||||||
sions, which was sometimes useful. 0.9.5 and above
|
|
||||||
have an improved algorithm which renders these
|
|
||||||
flags irrelevant.
|
|
||||||
|
|
||||||
|
|
||||||
MMEEMMOORRYY MMAANNAAGGEEMMEENNTT
|
|
||||||
_b_z_i_p_2 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) respec
|
|
||||||
tively. At decompression time, the block size used for
|
|
||||||
compression is read from the header of the compressed
|
|
||||||
file, and _b_u_n_z_i_p_2 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 _b_z_i_p_2 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,
|
|
||||||
_b_u_n_z_i_p_2 will require about 3700 kbytes to decompress. To
|
|
||||||
support decompression of any file on a 4 megabyte machine,
|
|
||||||
_b_u_n_z_i_p_2 has an option to decompress using approximately
|
|
||||||
half this amount of memory, about 2300 kbytes. Decompres
|
|
||||||
sion 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 con
|
|
||||||
straints allow, since that maximises the compression
|
|
||||||
achieved. Compression and decompression speed are virtu
|
|
||||||
ally 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 Compres
|
|
||||||
sion 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 domi
|
|
||||||
nated 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
|
|
||||||
|
|
||||||
|
|
||||||
RREECCOOVVEERRIINNGG DDAATTAA FFRROOMM DDAAMMAAGGEEDD FFIILLEESS
|
|
||||||
_b_z_i_p_2 compresses files in blocks, usually 900kbytes long.
|
|
||||||
Each block is handled independently. If a media or trans
|
|
||||||
mission 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.
|
|
||||||
|
|
||||||
_b_z_i_p_2_r_e_c_o_v_e_r 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 _b_z_i_p_2 −t to test
|
|
||||||
the integrity of the resulting files, and decompress those
|
|
||||||
which are undamaged.
|
|
||||||
|
|
||||||
_b_z_i_p_2_r_e_c_o_v_e_r takes a single argument, the name of the dam
|
|
||||||
aged 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 pro
|
|
||||||
cessing ‐‐ for example, "bzip2 ‐dc rec*file.bz2 > recov
|
|
||||||
ered_data" ‐‐ processes the files in the correct order.
|
|
||||||
|
|
||||||
_b_z_i_p_2_r_e_c_o_v_e_r 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 min
|
|
||||||
imise any potential data loss through media or transmis
|
|
||||||
sion errors, you might consider compressing with a smaller
|
|
||||||
block size.
|
|
||||||
|
|
||||||
|
|
||||||
PPEERRFFOORRMMAANNCCEE NNOOTTEESS
|
|
||||||
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 mon
|
|
||||||
itor progress in great detail, if you want.
|
|
||||||
|
|
||||||
Decompression speed is unaffected by these phenomena.
|
|
||||||
|
|
||||||
_b_z_i_p_2 usually allocates several megabytes of memory to
|
|
||||||
operate in, and then charges all over it in a fairly ran
|
|
||||||
dom fashion. This means that performance, both for com
|
|
||||||
pressing 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 _b_z_i_p_2 will per
|
|
||||||
form best on machines with very large caches.
|
|
||||||
|
|
||||||
|
|
||||||
CCAAVVEEAATTSS
|
|
||||||
I/O error messages are not as helpful as they could be.
|
|
||||||
_b_z_i_p_2 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.3 of _b_z_i_p_2_. Com
|
|
||||||
pressed 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 and
|
|
||||||
1.0.2, 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 decom
|
|
||||||
pressing just the first file in the stream.
|
|
||||||
|
|
||||||
_b_z_i_p_2_r_e_c_o_v_e_r 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.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
AAUUTTHHOORR
|
|
||||||
Julian Seward, jsewardbzip.org.
|
|
||||||
|
|
||||||
http://www.bzip.org
|
|
||||||
|
|
||||||
The ideas embodied in _b_z_i_p_2 are due to (at least) the fol
|
|
||||||
lowing people: Michael Burrows and David Wheeler (for the
|
|
||||||
block sorting transformation), David Wheeler (again, for
|
|
||||||
the Huffman coder), Peter Fenwick (for the structured cod
|
|
||||||
ing model in the original _b_z_i_p_, and many refinements), and
|
|
||||||
Alistair Moffat, Radford Neal and Ian Witten (for the
|
|
||||||
arithmetic coder in the original _b_z_i_p_)_. I am much
|
|
||||||
indebted for their help, support and advice. See the man
|
|
||||||
ual 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 compres
|
|
||||||
sion. Bela Lubkin encouraged me to improve the worst‐case
|
|
||||||
compression performance. Donna Robinson XMLised the docu
|
|
||||||
mentation. 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.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bzip2(1)
|
|
|
@ -1,391 +0,0 @@
|
||||||
|
|
||||||
NAME
|
|
||||||
bzip2, bunzip2 - a block-sorting file compressor, v1.0.3
|
|
||||||
bzcat - decompresses files to stdout
|
|
||||||
bzip2recover - recovers data from damaged bzip2 files
|
|
||||||
|
|
||||||
|
|
||||||
SYNOPSIS
|
|
||||||
bzip2 [ -cdfkqstvzVL123456789 ] [ filenames ... ]
|
|
||||||
bunzip2 [ -fkvsVL ] [ filenames ... ]
|
|
||||||
bzcat [ -s ] [ filenames ... ]
|
|
||||||
bzip2recover filename
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
|
||||||
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 sta-
|
|
||||||
tistical compressors.
|
|
||||||
|
|
||||||
The command-line options are deliberately very similar to
|
|
||||||
those of GNU gzip, but they are not identical.
|
|
||||||
|
|
||||||
bzip2 expects a list of file names to accompany the com-
|
|
||||||
mand-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, per-
|
|
||||||
missions, and, when possible, ownership as the correspond-
|
|
||||||
ing 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 preserv-
|
|
||||||
ing original file names, permissions, ownerships or dates
|
|
||||||
in filesystems which lack these concepts, or have serious
|
|
||||||
file name length restrictions, such as MS-DOS.
|
|
||||||
|
|
||||||
bzip2 and bunzip2 will by default not overwrite existing
|
|
||||||
files. If you want this to happen, specify the -f flag.
|
|
||||||
|
|
||||||
If no file names are specified, bzip2 compresses from
|
|
||||||
standard input to standard output. In this case, bzip2
|
|
||||||
will decline to write compressed output to a terminal, as
|
|
||||||
this would be entirely incomprehensible and therefore
|
|
||||||
pointless.
|
|
||||||
|
|
||||||
bunzip2 (or bzip2 -d) decompresses all specified files.
|
|
||||||
Files which were not created by bzip2 will be detected and
|
|
||||||
ignored, and a warning issued. 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,
|
|
||||||
.bz2, .bz, .tbz2 or .tbz, bzip2 complains that it cannot
|
|
||||||
guess the name of the original file, and uses the original
|
|
||||||
name with .out appended.
|
|
||||||
|
|
||||||
As with compression, supplying no filenames causes decom-
|
|
||||||
pression from standard input to standard output.
|
|
||||||
|
|
||||||
bunzip2 will correctly decompress a file which is the con-
|
|
||||||
catenation 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 com-
|
|
||||||
pressed and decompressed like this. The resulting outputs
|
|
||||||
are fed sequentially to stdout. Compression of multiple
|
|
||||||
files in this manner generates a stream containing multi-
|
|
||||||
ple compressed file representations. Such a stream can be
|
|
||||||
decompressed correctly only by bzip2 version 0.9.0 or
|
|
||||||
later. Earlier versions of bzip2 will stop after decom-
|
|
||||||
pressing the first file in the stream.
|
|
||||||
|
|
||||||
bzcat (or bzip2 -dc) decompresses all specified files to
|
|
||||||
the standard output.
|
|
||||||
|
|
||||||
bzip2 will read arguments from the environment variables
|
|
||||||
BZIP2 and 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, bzip2 uses 32-bit
|
|
||||||
CRCs to make sure that the decompressed version of a file
|
|
||||||
is identical to the original. This guards against corrup-
|
|
||||||
tion of the compressed data, and against undetected bugs
|
|
||||||
in 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
|
|
||||||
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 bzip2 to panic.
|
|
||||||
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-c --stdout
|
|
||||||
Compress or decompress to standard output.
|
|
||||||
|
|
||||||
-d --decompress
|
|
||||||
Force decompression. bzip2, bunzip2 and 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 bzip2 to decompress.
|
|
||||||
|
|
||||||
-z --compress
|
|
||||||
The complement to -d: forces compression,
|
|
||||||
regardless of the invocation name.
|
|
||||||
|
|
||||||
-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.
|
|
||||||
|
|
||||||
-f --force
|
|
||||||
Force overwrite of output files. Normally, bzip2
|
|
||||||
will not overwrite existing output files. Also
|
|
||||||
forces 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.
|
|
||||||
|
|
||||||
-k --keep
|
|
||||||
Keep (don't delete) input files during compression
|
|
||||||
or decompression.
|
|
||||||
|
|
||||||
-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.
|
|
||||||
|
|
||||||
-q --quiet
|
|
||||||
Suppress non-essential warning messages. Messages
|
|
||||||
pertaining to I/O errors and other critical events
|
|
||||||
will not be suppressed.
|
|
||||||
|
|
||||||
-v --verbose
|
|
||||||
Verbose mode -- show the compression ratio for each
|
|
||||||
file processed. Further -v's increase the ver-
|
|
||||||
bosity level, spewing out lots of information which
|
|
||||||
is primarily of interest for diagnostic purposes.
|
|
||||||
|
|
||||||
-L --license -V --version
|
|
||||||
Display the software version, license terms and
|
|
||||||
conditions.
|
|
||||||
|
|
||||||
-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 signifi-
|
|
||||||
cantly faster. And --best merely selects the
|
|
||||||
default behaviour.
|
|
||||||
|
|
||||||
-- Treats all subsequent arguments as file names, even
|
|
||||||
if they start with a dash. This is so you can han-
|
|
||||||
dle files with names beginning with a dash, for
|
|
||||||
example: bzip2 -- -myfilename.
|
|
||||||
|
|
||||||
--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 ver-
|
|
||||||
sions, which was sometimes useful. 0.9.5 and above
|
|
||||||
have an improved algorithm which renders these
|
|
||||||
flags irrelevant.
|
|
||||||
|
|
||||||
|
|
||||||
MEMORY MANAGEMENT
|
|
||||||
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) respec-
|
|
||||||
tively. At decompression time, the block size used for
|
|
||||||
compression is read from the header of the compressed
|
|
||||||
file, and 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 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,
|
|
||||||
bunzip2 will require about 3700 kbytes to decompress. To
|
|
||||||
support decompression of any file on a 4 megabyte machine,
|
|
||||||
bunzip2 has an option to decompress using approximately
|
|
||||||
half this amount of memory, about 2300 kbytes. Decompres-
|
|
||||||
sion 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 con-
|
|
||||||
straints allow, since that maximises the compression
|
|
||||||
achieved. Compression and decompression speed are virtu-
|
|
||||||
ally 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 Compres-
|
|
||||||
sion 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 domi-
|
|
||||||
nated 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
|
|
||||||
|
|
||||||
|
|
||||||
RECOVERING DATA FROM DAMAGED FILES
|
|
||||||
bzip2 compresses files in blocks, usually 900kbytes long.
|
|
||||||
Each block is handled independently. If a media or trans-
|
|
||||||
mission 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.
|
|
||||||
|
|
||||||
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 bzip2 -t to test
|
|
||||||
the integrity of the resulting files, and decompress those
|
|
||||||
which are undamaged.
|
|
||||||
|
|
||||||
bzip2recover takes a single argument, the name of the dam-
|
|
||||||
aged 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 pro-
|
|
||||||
cessing -- for example, "bzip2 -dc rec*file.bz2 > recov-
|
|
||||||
ered_data" -- processes the files in the correct order.
|
|
||||||
|
|
||||||
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 min-
|
|
||||||
imise any potential data loss through media or transmis-
|
|
||||||
sion errors, you might consider compressing with a smaller
|
|
||||||
block size.
|
|
||||||
|
|
||||||
|
|
||||||
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 mon-
|
|
||||||
itor progress in great detail, if you want.
|
|
||||||
|
|
||||||
Decompression speed is unaffected by these phenomena.
|
|
||||||
|
|
||||||
bzip2 usually allocates several megabytes of memory to
|
|
||||||
operate in, and then charges all over it in a fairly ran-
|
|
||||||
dom fashion. This means that performance, both for com-
|
|
||||||
pressing 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 bzip2 will per-
|
|
||||||
form best on machines with very large caches.
|
|
||||||
|
|
||||||
|
|
||||||
CAVEATS
|
|
||||||
I/O error messages are not as helpful as they could be.
|
|
||||||
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.3 of bzip2. Com-
|
|
||||||
pressed 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 and
|
|
||||||
1.0.2, 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 decom-
|
|
||||||
pressing just the first file in the stream.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
|
|
||||||
AUTHOR
|
|
||||||
Julian Seward, jsewardbzip.org.
|
|
||||||
|
|
||||||
http://www.bzip.org
|
|
||||||
|
|
||||||
The ideas embodied in bzip2 are due to (at least) the fol-
|
|
||||||
lowing people: Michael Burrows and David Wheeler (for the
|
|
||||||
block sorting transformation), David Wheeler (again, for
|
|
||||||
the Huffman coder), Peter Fenwick (for the structured cod-
|
|
||||||
ing model in the original bzip, and many refinements), and
|
|
||||||
Alistair Moffat, Radford Neal and Ian Witten (for the
|
|
||||||
arithmetic coder in the original bzip). I am much
|
|
||||||
indebted for their help, support and advice. See the man-
|
|
||||||
ual 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 compres-
|
|
||||||
sion. Bela Lubkin encouraged me to improve the worst-case
|
|
||||||
compression performance. Donna Robinson XMLised the docu-
|
|
||||||
mentation. 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.
|
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
|
|
||||||
/* Spew out a long sequence of the byte 251. When fed to bzip2
|
|
||||||
versions 1.0.0 or 1.0.1, causes it to die with internal error
|
|
||||||
1007 in blocksort.c. This assertion misses an extremely rare
|
|
||||||
case, which is fixed in this version (1.0.2) and above.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
int main ()
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < 48500000 ; i++)
|
|
||||||
putchar(251);
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
NOMAN=
|
|
||||||
|
|
||||||
.include <bsd.own.mk>
|
|
||||||
|
|
||||||
PROG= bzip2recover
|
|
||||||
CPPFLAGS+= -I ${BZ2DIR}
|
|
||||||
|
|
||||||
BZ2DIR= ${MINIXSRCDIR}/commands/bzip2
|
|
||||||
.PATH: ${BZ2DIR}
|
|
||||||
|
|
||||||
.include <bsd.prog.mk>
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
NEED_NBSDLIBC= yes
|
||||||
|
|
||||||
.include <bsd.own.mk>
|
.include <bsd.own.mk>
|
||||||
|
|
||||||
PROG= bsdtar
|
PROG= bsdtar
|
||||||
|
|
|
@ -81,6 +81,10 @@ __FBSDID("$FreeBSD: src/usr.bin/tar/bsdtar.c,v 1.93 2008/11/08 04:43:24 kientzle
|
||||||
#define _PATH_DEFTAPE "\\\\.\\tape0"
|
#define _PATH_DEFTAPE "\\\\.\\tape0"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _PATH_DEFTAPE
|
||||||
|
#undef _PATH_DEFTAPE
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef _PATH_DEFTAPE
|
#ifndef _PATH_DEFTAPE
|
||||||
#define _PATH_DEFTAPE "/dev/tape"
|
#define _PATH_DEFTAPE "/dev/tape"
|
||||||
#endif
|
#endif
|
||||||
|
|
46
commands/bzip2/CHANGES → dist/bzip2/CHANGES
vendored
46
commands/bzip2/CHANGES → dist/bzip2/CHANGES
vendored
|
@ -1,3 +1,16 @@
|
||||||
|
------------------------------------------------------------------
|
||||||
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 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
|
0.9.0
|
||||||
|
@ -261,7 +274,7 @@ Fixes some minor bugs since the last version, 1.0.2.
|
||||||
decompressor to crash, loop or access memory which does not
|
decompressor to crash, loop or access memory which does not
|
||||||
belong to it. If you are using bzip2 or the library to
|
belong to it. If you are using bzip2 or the library to
|
||||||
decompress bitstreams from untrusted sources, an upgrade
|
decompress bitstreams from untrusted sources, an upgrade
|
||||||
to 1.0.3 is recommended.
|
to 1.0.3 is recommended. This fixes CAN-2005-1260.
|
||||||
|
|
||||||
* The documentation has been converted to XML, from which html
|
* The documentation has been converted to XML, from which html
|
||||||
and pdf can be derived.
|
and pdf can be derived.
|
||||||
|
@ -273,3 +286,34 @@ Fixes some minor bugs since the last version, 1.0.2.
|
||||||
|
|
||||||
* The BZ_NO_STDIO cpp symbol was not properly observed in 1.0.2.
|
* The BZ_NO_STDIO cpp symbol was not properly observed in 1.0.2.
|
||||||
This has been fixed.
|
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.
|
||||||
|
|
10
commands/bzip2/LICENSE → dist/bzip2/LICENSE
vendored
10
commands/bzip2/LICENSE → dist/bzip2/LICENSE
vendored
|
@ -1,6 +1,8 @@
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
|
||||||
This program, "bzip2", the associated library "libbzip2", and all
|
This program, "bzip2", the associated library "libbzip2", and all
|
||||||
documentation, are copyright (C) 1996-2005 Julian R Seward. All
|
documentation, are copyright (C) 1996-2007 Julian R Seward. All
|
||||||
rights reserved.
|
rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -34,7 +36,7 @@ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
Julian Seward, Cambridge, UK.
|
Julian Seward, jseward@bzip.org
|
||||||
jseward@acm.org
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
bzip2/libbzip2 version 1.0.3 of 15 February 2005
|
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------
|
115
commands/bzip2/Makefile.orig → dist/bzip2/Makefile
vendored
115
commands/bzip2/Makefile.orig → dist/bzip2/Makefile
vendored
|
@ -1,22 +1,30 @@
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# This file is part of bzip2/libbzip2, a program and library for
|
||||||
|
# lossless, block-sorting data compression.
|
||||||
|
#
|
||||||
|
# bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
# Copyright (C) 1996-2007 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
|
SHELL=/bin/sh
|
||||||
|
|
||||||
# To assist in cross-compiling
|
# To assist in cross-compiling
|
||||||
CC=exec cc
|
CC=clang
|
||||||
AR=ar
|
AR=ar
|
||||||
ARFLAGS=cr
|
|
||||||
RANLIB=ranlib
|
RANLIB=ranlib
|
||||||
LDFLAGS=
|
LDFLAGS=
|
||||||
|
|
||||||
BIGFILES=#-D_FILE_OFFSET_BITS=64
|
BIGFILES=-D_FILE_OFFSET_BITS=64
|
||||||
CFLAGS=-Wall -Winline -O -g $(BIGFILES) -Dlstat=stat -D_POSIX_SOURCE=1
|
CFLAGS=-Wall -Winline -O2 -g $(BIGFILES)
|
||||||
|
|
||||||
# Where you want it installed when you do 'make install'
|
# Where you want it installed when you do 'make install'
|
||||||
PREFIX=/usr
|
PREFIX=/usr
|
||||||
PREFIX_BIN=$(PREFIX)/bin
|
|
||||||
PREFIX_LIB=$(PREFIX)/lib
|
|
||||||
PREFIX_MAN=$(PREFIX)/man
|
|
||||||
PREFIX_INC=$(PREFIX)/include
|
|
||||||
|
|
||||||
|
|
||||||
OBJS= blocksort.o \
|
OBJS= blocksort.o \
|
||||||
|
@ -27,10 +35,7 @@ OBJS= blocksort.o \
|
||||||
decompress.o \
|
decompress.o \
|
||||||
bzlib.o
|
bzlib.o
|
||||||
|
|
||||||
all: all_notest
|
all: libbz2.a bzip2 bzip2recover test
|
||||||
|
|
||||||
all_notest: libbz2.a bzip2 bzip2recover
|
|
||||||
chmem =8000000 bzip2
|
|
||||||
|
|
||||||
bzip2: libbz2.a bzip2.o
|
bzip2: libbz2.a bzip2.o
|
||||||
$(CC) $(CFLAGS) $(LDFLAGS) -o bzip2 bzip2.o -L. -lbz2
|
$(CC) $(CFLAGS) $(LDFLAGS) -o bzip2 bzip2.o -L. -lbz2
|
||||||
|
@ -40,7 +45,7 @@ bzip2recover: bzip2recover.o
|
||||||
|
|
||||||
libbz2.a: $(OBJS)
|
libbz2.a: $(OBJS)
|
||||||
rm -f libbz2.a
|
rm -f libbz2.a
|
||||||
$(AR) $(ARFLAGS) libbz2.a $(OBJS)
|
$(AR) cq libbz2.a $(OBJS)
|
||||||
@if ( test -f $(RANLIB) -o -f /usr/bin/ranlib -o \
|
@if ( test -f $(RANLIB) -o -f /usr/bin/ranlib -o \
|
||||||
-f /bin/ranlib -o -f /usr/ccs/bin/ranlib ) ; then \
|
-f /bin/ranlib -o -f /usr/ccs/bin/ranlib ) ; then \
|
||||||
echo $(RANLIB) libbz2.a ; \
|
echo $(RANLIB) libbz2.a ; \
|
||||||
|
@ -48,9 +53,7 @@ libbz2.a: $(OBJS)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
check: test
|
check: test
|
||||||
test: bzip2 test_nodep
|
test: bzip2
|
||||||
|
|
||||||
test_nodep:
|
|
||||||
@cat words1
|
@cat words1
|
||||||
./bzip2 -1 < sample1.ref > sample1.rb2
|
./bzip2 -1 < sample1.ref > sample1.rb2
|
||||||
./bzip2 -2 < sample2.ref > sample2.rb2
|
./bzip2 -2 < sample2.ref > sample2.rb2
|
||||||
|
@ -67,44 +70,43 @@ test_nodep:
|
||||||
@cat words3
|
@cat words3
|
||||||
|
|
||||||
install: bzip2 bzip2recover
|
install: bzip2 bzip2recover
|
||||||
if ( test ! -d $(PREFIX_BIN) ) ; then mkdir -p $(PREFIX_BIN) ; fi
|
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)/lib ) ; then mkdir -p $(PREFIX)/lib ; fi
|
||||||
if ( test ! -d $(PREFIX_MAN) ) ; then mkdir -p $(PREFIX_MAN) ; 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)/man/man1 ) ; then mkdir -p $(PREFIX)/man/man1 ; fi
|
||||||
if ( test ! -d $(PREFIX_INC) ) ; then mkdir -p $(PREFIX_INC) ; fi
|
if ( test ! -d $(PREFIX)/include ) ; then mkdir -p $(PREFIX)/include ; fi
|
||||||
install -S 8M -o bin bzip2 $(PREFIX_BIN)/bzip2
|
cp -f bzip2 $(PREFIX)/bin/bzip2
|
||||||
install -S 4M -o bin bzip2 $(PREFIX_BIN)/bunzip2
|
cp -f bzip2 $(PREFIX)/bin/bunzip2
|
||||||
install -S 2450k -o bin bzip2 $(PREFIX_BIN)/smallbunzip2
|
cp -f bzip2 $(PREFIX)/bin/bzcat
|
||||||
install -o bin bzip2 $(PREFIX_BIN)/bzcat
|
cp -f bzip2recover $(PREFIX)/bin/bzip2recover
|
||||||
install -o bin bzip2recover $(PREFIX_BIN)/bzip2recover
|
chmod a+x $(PREFIX)/bin/bzip2
|
||||||
chmod a+x $(PREFIX_BIN)/bzip2
|
chmod a+x $(PREFIX)/bin/bunzip2
|
||||||
chmod a+x $(PREFIX_BIN)/bunzip2
|
chmod a+x $(PREFIX)/bin/bzcat
|
||||||
chmod a+x $(PREFIX_BIN)/bzcat
|
chmod a+x $(PREFIX)/bin/bzip2recover
|
||||||
chmod a+x $(PREFIX_BIN)/bzip2recover
|
cp -f bzip2.1 $(PREFIX)/man/man1
|
||||||
install -o bin bzip2.1 $(PREFIX_MAN)/man1
|
chmod a+r $(PREFIX)/man/man1/bzip2.1
|
||||||
chmod a+r $(PREFIX_MAN)/man1/bzip2.1
|
cp -f bzlib.h $(PREFIX)/include
|
||||||
install -o bin bzlib.h $(PREFIX_INC)
|
chmod a+r $(PREFIX)/include/bzlib.h
|
||||||
chmod a+r $(PREFIX_INC)/bzlib.h
|
cp -f libbz2.a $(PREFIX)/lib
|
||||||
install -o bin libbz2.a $(PREFIX_LIB)
|
chmod a+r $(PREFIX)/lib/libbz2.a
|
||||||
chmod a+r $(PREFIX_LIB)/libbz2.a
|
cp -f bzgrep $(PREFIX)/bin/bzgrep
|
||||||
install -o bin bzgrep $(PREFIX_BIN)/bzgrep
|
ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzegrep
|
||||||
ln -f $(PREFIX_BIN)/bzgrep $(PREFIX_BIN)/bzegrep
|
ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzfgrep
|
||||||
ln -f $(PREFIX_BIN)/bzgrep $(PREFIX_BIN)/bzfgrep
|
chmod a+x $(PREFIX)/bin/bzgrep
|
||||||
chmod a+x $(PREFIX_BIN)/bzgrep
|
cp -f bzmore $(PREFIX)/bin/bzmore
|
||||||
install -o bin bzmore $(PREFIX_BIN)/bzmore
|
ln -s -f $(PREFIX)/bin/bzmore $(PREFIX)/bin/bzless
|
||||||
ln -f $(PREFIX_BIN)/bzmore $(PREFIX_BIN)/bzless
|
chmod a+x $(PREFIX)/bin/bzmore
|
||||||
chmod a+x $(PREFIX_BIN)/bzmore
|
cp -f bzdiff $(PREFIX)/bin/bzdiff
|
||||||
install -o bin bzdiff $(PREFIX_BIN)/bzdiff
|
ln -s -f $(PREFIX)/bin/bzdiff $(PREFIX)/bin/bzcmp
|
||||||
ln -f $(PREFIX_BIN)/bzdiff $(PREFIX_BIN)/bzcmp
|
chmod a+x $(PREFIX)/bin/bzdiff
|
||||||
chmod a+x $(PREFIX_BIN)/bzdiff
|
cp -f bzgrep.1 bzmore.1 bzdiff.1 $(PREFIX)/man/man1
|
||||||
install -o bin bzgrep.1 bzmore.1 bzdiff.1 $(PREFIX_MAN)/man1
|
chmod a+r $(PREFIX)/man/man1/bzgrep.1
|
||||||
chmod a+r $(PREFIX_MAN)/man1/bzgrep.1
|
chmod a+r $(PREFIX)/man/man1/bzmore.1
|
||||||
chmod a+r $(PREFIX_MAN)/man1/bzmore.1
|
chmod a+r $(PREFIX)/man/man1/bzdiff.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/bzegrep.1
|
echo ".so man1/bzgrep.1" > $(PREFIX)/man/man1/bzfgrep.1
|
||||||
echo ".so man1/bzgrep.1" > $(PREFIX_MAN)/man1/bzfgrep.1
|
echo ".so man1/bzmore.1" > $(PREFIX)/man/man1/bzless.1
|
||||||
echo ".so man1/bzmore.1" > $(PREFIX_MAN)/man1/bzless.1
|
echo ".so man1/bzdiff.1" > $(PREFIX)/man/man1/bzcmp.1
|
||||||
echo ".so man1/bzdiff.1" > $(PREFIX_MAN)/man1/bzcmp.1
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o libbz2.a bzip2 bzip2recover \
|
rm -f *.o libbz2.a bzip2 bzip2recover \
|
||||||
|
@ -135,10 +137,10 @@ bzip2recover.o: bzip2recover.c
|
||||||
distclean: clean
|
distclean: clean
|
||||||
rm -f manual.ps manual.html manual.pdf
|
rm -f manual.ps manual.html manual.pdf
|
||||||
|
|
||||||
DISTNAME=bzip2-1.0.3
|
DISTNAME=bzip2-1.0.5
|
||||||
dist: check manual
|
dist: check manual
|
||||||
rm -f $(DISTNAME)
|
rm -f $(DISTNAME)
|
||||||
ln -sf . $(DISTNAME)
|
ln -s -f . $(DISTNAME)
|
||||||
tar cvf $(DISTNAME).tar \
|
tar cvf $(DISTNAME).tar \
|
||||||
$(DISTNAME)/blocksort.c \
|
$(DISTNAME)/blocksort.c \
|
||||||
$(DISTNAME)/huffman.c \
|
$(DISTNAME)/huffman.c \
|
||||||
|
@ -178,7 +180,6 @@ dist: check manual
|
||||||
$(DISTNAME)/libbz2.dsp \
|
$(DISTNAME)/libbz2.dsp \
|
||||||
$(DISTNAME)/dlltest.dsp \
|
$(DISTNAME)/dlltest.dsp \
|
||||||
$(DISTNAME)/makefile.msc \
|
$(DISTNAME)/makefile.msc \
|
||||||
$(DISTNAME)/Y2K_INFO \
|
|
||||||
$(DISTNAME)/unzcrash.c \
|
$(DISTNAME)/unzcrash.c \
|
||||||
$(DISTNAME)/spewG.c \
|
$(DISTNAME)/spewG.c \
|
||||||
$(DISTNAME)/mk251.c \
|
$(DISTNAME)/mk251.c \
|
59
dist/bzip2/Makefile-libbz2_so
vendored
Normal file
59
dist/bzip2/Makefile-libbz2_so
vendored
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
|
||||||
|
# This Makefile builds a shared version of the library,
|
||||||
|
# libbz2.so.1.0.4, 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.5 of 10 December 2007
|
||||||
|
# Copyright (C) 1996-2007 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.4 $(OBJS)
|
||||||
|
$(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.4
|
||||||
|
rm -f libbz2.so.1.0
|
||||||
|
ln -s libbz2.so.1.0.4 libbz2.so.1.0
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(OBJS) bzip2.o libbz2.so.1.0.4 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
|
105
commands/bzip2/README → dist/bzip2/README
vendored
105
commands/bzip2/README → dist/bzip2/README
vendored
|
@ -1,33 +1,48 @@
|
||||||
|
|
||||||
This is the README for bzip2, a block-sorting file compressor, version
|
This is the README for bzip2/libzip2.
|
||||||
1.0.3. This version is fully compatible with the previous public
|
This version is fully compatible with the previous public releases.
|
||||||
releases, versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1 and 1.0.2.
|
|
||||||
|
|
||||||
bzip2-1.0.3 is distributed under a BSD-style license. For details,
|
------------------------------------------------------------------
|
||||||
see the file LICENSE.
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 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),
|
Complete documentation is available in Postscript form (manual.ps),
|
||||||
PDF (manual.pdf) or html (manual.html). A plain-text version of the
|
PDF (manual.pdf) or html (manual.html). A plain-text version of the
|
||||||
manual page is available as bzip2.txt. A statement about Y2K issues
|
manual page is available as bzip2.txt.
|
||||||
is now included in the file Y2K_INFO.
|
|
||||||
|
|
||||||
|
|
||||||
HOW TO BUILD -- UNIX
|
HOW TO BUILD -- UNIX
|
||||||
|
|
||||||
Type `make'. This builds the library libbz2.a and then the
|
Type 'make'. This builds the library libbz2.a and then the programs
|
||||||
programs bzip2 and bzip2recover. Six self-tests are run.
|
bzip2 and bzip2recover. Six self-tests are run. If the self-tests
|
||||||
If the self-tests complete ok, carry on to installation:
|
complete ok, carry on to installation:
|
||||||
|
|
||||||
|
To install in /usr/local/bin, /usr/local/lib, /usr/local/man and
|
||||||
|
/usr/local/include, type
|
||||||
|
|
||||||
To install in /usr/bin, /usr/lib, /usr/man and /usr/include, type
|
|
||||||
make install
|
make install
|
||||||
To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type
|
|
||||||
|
To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type
|
||||||
|
|
||||||
make install PREFIX=/xxx/yyy
|
make install PREFIX=/xxx/yyy
|
||||||
|
|
||||||
If you are (justifiably) paranoid and want to see what 'make install'
|
If you are (justifiably) paranoid and want to see what 'make install'
|
||||||
is going to do, you can first do
|
is going to do, you can first do
|
||||||
|
|
||||||
make -n install or
|
make -n install or
|
||||||
make -n install PREFIX=/xxx/yyy respectively.
|
make -n install PREFIX=/xxx/yyy respectively.
|
||||||
The -n instructs make to show the commands it would execute, but
|
|
||||||
not actually execute them.
|
The -n instructs make to show the commands it would execute, but not
|
||||||
|
actually execute them.
|
||||||
|
|
||||||
|
|
||||||
HOW TO BUILD -- UNIX, shared library libbz2.so.
|
HOW TO BUILD -- UNIX, shared library libbz2.so.
|
||||||
|
@ -49,23 +64,25 @@ Important note for people upgrading .so's from 0.9.0/0.9.5 to version
|
||||||
bzCompress to BZ2_bzCompress, to avoid namespace pollution.
|
bzCompress to BZ2_bzCompress, to avoid namespace pollution.
|
||||||
Unfortunately this means that the libbz2.so created by
|
Unfortunately this means that the libbz2.so created by
|
||||||
Makefile-libbz2_so will not work with any program which used an older
|
Makefile-libbz2_so will not work with any program which used an older
|
||||||
version of the library. Sorry. I do encourage library clients to
|
version of the library. I do encourage library clients to make the
|
||||||
make the effort to upgrade to use version 1.0, since it is both faster
|
effort to upgrade to use version 1.0, since it is both faster and more
|
||||||
and more robust than previous versions.
|
robust than previous versions.
|
||||||
|
|
||||||
|
|
||||||
HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc.
|
HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc.
|
||||||
|
|
||||||
It's difficult for me to support compilation on all these platforms.
|
It's difficult for me to support compilation on all these platforms.
|
||||||
My approach is to collect binaries for these platforms, and put them
|
My approach is to collect binaries for these platforms, and put them
|
||||||
on the master web page (http://sources.redhat.com/bzip2). Look there.
|
on the master web site (http://www.bzip.org). Look there. However
|
||||||
However (FWIW), bzip2-1.0.X is very standard ANSI C and should compile
|
(FWIW), bzip2-1.0.X is very standard ANSI C and should compile
|
||||||
unmodified with MS Visual C. If you have difficulties building, you
|
unmodified with MS Visual C. If you have difficulties building, you
|
||||||
might want to read README.COMPILATION.PROBLEMS.
|
might want to read README.COMPILATION.PROBLEMS.
|
||||||
|
|
||||||
At least using MS Visual C++ 6, you can build from the unmodified
|
At least using MS Visual C++ 6, you can build from the unmodified
|
||||||
sources by issuing, in a command shell:
|
sources by issuing, in a command shell:
|
||||||
|
|
||||||
nmake -f makefile.msc
|
nmake -f makefile.msc
|
||||||
|
|
||||||
(you may need to first run the MSVC-provided script VCVARS32.BAT
|
(you may need to first run the MSVC-provided script VCVARS32.BAT
|
||||||
so as to set up paths to the MSVC tools correctly).
|
so as to set up paths to the MSVC tools correctly).
|
||||||
|
|
||||||
|
@ -86,18 +103,19 @@ Please read and be aware of the following:
|
||||||
|
|
||||||
WARNING:
|
WARNING:
|
||||||
|
|
||||||
This program (attempts to) compress data by performing several
|
This program and library (attempts to) compress data by
|
||||||
non-trivial transformations on it. Unless you are 100% familiar
|
performing several non-trivial transformations on it.
|
||||||
with *all* the algorithms contained herein, and with the
|
Unless you are 100% familiar with *all* the algorithms
|
||||||
consequences of modifying them, you should NOT meddle with the
|
contained herein, and with the consequences of modifying them,
|
||||||
compression or decompression machinery. Incorrect changes can and
|
you should NOT meddle with the compression or decompression
|
||||||
very likely *will* lead to disastrous loss of data.
|
machinery. Incorrect changes can and very likely *will*
|
||||||
|
lead to disastrous loss of data.
|
||||||
|
|
||||||
|
|
||||||
DISCLAIMER:
|
DISCLAIMER:
|
||||||
|
|
||||||
I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE
|
I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE
|
||||||
USE OF THIS PROGRAM, HOWSOEVER CAUSED.
|
USE OF THIS PROGRAM/LIBRARY, HOWSOEVER CAUSED.
|
||||||
|
|
||||||
Every compression of a file implies an assumption that the
|
Every compression of a file implies an assumption that the
|
||||||
compressed file can be decompressed to reproduce the original.
|
compressed file can be decompressed to reproduce the original.
|
||||||
|
@ -110,19 +128,18 @@ DISCLAIMER:
|
||||||
PROGRAM UNLESS YOU ARE PREPARED TO ACCEPT THE POSSIBILITY, HOWEVER
|
PROGRAM UNLESS YOU ARE PREPARED TO ACCEPT THE POSSIBILITY, HOWEVER
|
||||||
SMALL, THAT THE DATA WILL NOT BE RECOVERABLE.
|
SMALL, THAT THE DATA WILL NOT BE RECOVERABLE.
|
||||||
|
|
||||||
That is not to say this program is inherently unreliable. Indeed,
|
That is not to say this program is inherently unreliable.
|
||||||
I very much hope the opposite is true. bzip2 has been carefully
|
Indeed, I very much hope the opposite is true. bzip2/libbzip2
|
||||||
constructed and extensively tested.
|
has been carefully constructed and extensively tested.
|
||||||
|
|
||||||
|
|
||||||
PATENTS:
|
PATENTS:
|
||||||
|
|
||||||
To the best of my knowledge, bzip2 does not use any patented
|
To the best of my knowledge, bzip2/libbzip2 does not use any
|
||||||
algorithms. However, I do not have the resources to carry out
|
patented algorithms. However, I do not have the resources
|
||||||
a patent search. Therefore I cannot give any guarantee of the
|
to carry out a patent search. Therefore I cannot give any
|
||||||
above statement.
|
guarantee of the above statement.
|
||||||
|
|
||||||
End of legalities.
|
|
||||||
|
|
||||||
|
|
||||||
WHAT'S NEW IN 0.9.0 (as compared to 0.1pl2) ?
|
WHAT'S NEW IN 0.9.0 (as compared to 0.1pl2) ?
|
||||||
|
@ -156,21 +173,27 @@ WHAT'S NEW IN 1.0.3 ?
|
||||||
|
|
||||||
See the CHANGES file.
|
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.
|
||||||
|
|
||||||
|
|
||||||
I hope you find bzip2 useful. Feel free to contact me at
|
I hope you find bzip2 useful. Feel free to contact me at
|
||||||
jseward@bzip.org
|
jseward@bzip.org
|
||||||
if you have any suggestions or queries. Many people mailed me with
|
if you have any suggestions or queries. Many people mailed me with
|
||||||
comments, suggestions and patches after the releases of bzip-0.15,
|
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 and
|
bzip-0.21, and bzip2 versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1,
|
||||||
1.0.2, and the changes in bzip2 are largely a result of this feedback.
|
1.0.2 and 1.0.3, and the changes in bzip2 are largely a result of this
|
||||||
I thank you for your comments.
|
feedback. I thank you for your comments.
|
||||||
|
|
||||||
At least for the time being, bzip2's "home" is (or can be reached via)
|
bzip2's "home" is http://www.bzip.org/
|
||||||
http://www.bzip.org
|
|
||||||
|
|
||||||
Julian Seward
|
Julian Seward
|
||||||
jseward@bzip.org
|
jseward@bzip.org
|
||||||
|
|
||||||
Cambridge, UK.
|
Cambridge, UK.
|
||||||
|
|
||||||
18 July 1996 (version 0.15)
|
18 July 1996 (version 0.15)
|
||||||
|
@ -183,3 +206,5 @@ Cambridge, UK.
|
||||||
5 May 2000 (bzip2, version 1.0pre8)
|
5 May 2000 (bzip2, version 1.0pre8)
|
||||||
30 December 2001 (bzip2, version 1.0.2pre1)
|
30 December 2001 (bzip2, version 1.0.2pre1)
|
||||||
15 February 2005 (bzip2, version 1.0.3)
|
15 February 2005 (bzip2, version 1.0.3)
|
||||||
|
20 December 2006 (bzip2, version 1.0.4)
|
||||||
|
10 December 2007 (bzip2, version 1.0.5)
|
|
@ -1,32 +1,47 @@
|
||||||
|
------------------------------------------------------------------
|
||||||
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
bzip2-1.0.3 should compile without problems on the vast majority of
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 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.5 should compile without problems on the vast majority of
|
||||||
platforms. Using the supplied Makefile, I've built and tested it
|
platforms. Using the supplied Makefile, I've built and tested it
|
||||||
myself for x86-linux and x86_64-linux. With makefile.msc, Visual C++
|
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
|
6.0 and nmake, you can build a native Win32 version too. Large file
|
||||||
support seems to work correctly on at least alpha-tru64unix and
|
support seems to work correctly on at least on amd64-linux.
|
||||||
x86-cygwin32 (on Windows 2000).
|
|
||||||
|
|
||||||
When I say "large file" I mean a file of size 2,147,483,648 (2^31)
|
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,
|
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
|
but many newer ones can. Large files are pretty huge -- most files
|
||||||
you'll encounter are not Large Files.
|
you'll encounter are not Large Files.
|
||||||
|
|
||||||
Earlier versions of bzip2 (0.1, 0.9.0, 0.9.5) compiled on a wide
|
Early versions of bzip2 (0.1, 0.9.0, 0.9.5) compiled on a wide variety
|
||||||
variety of platforms without difficulty, and I hope this version will
|
of platforms without difficulty, and I hope this version will continue
|
||||||
continue in that tradition. However, in order to support large files,
|
in that tradition. However, in order to support large files, I've had
|
||||||
I've had to include the define -D_FILE_OFFSET_BITS=64 in the Makefile.
|
to include the define -D_FILE_OFFSET_BITS=64 in the Makefile. This
|
||||||
This can cause problems.
|
can cause problems.
|
||||||
|
|
||||||
The technique of adding -D_FILE_OFFSET_BITS=64 to get large file
|
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
|
support is, as far as I know, the Recommended Way to get correct large
|
||||||
file support. For more details, see the Large File Support
|
file support. For more details, see the Large File Support
|
||||||
Specification, published by the Large File Summit, at
|
Specification, published by the Large File Summit, at
|
||||||
|
|
||||||
http://ftp.sas.com/standards/large.file
|
http://ftp.sas.com/standards/large.file
|
||||||
|
|
||||||
As a general comment, if you get compilation errors which you think
|
As a general comment, if you get compilation errors which you think
|
||||||
are related to large file support, try removing the above define from
|
are related to large file support, try removing the above define from
|
||||||
the Makefile, ie, delete the line
|
the Makefile, ie, delete the line
|
||||||
|
|
||||||
BIGFILES=-D_FILE_OFFSET_BITS=64
|
BIGFILES=-D_FILE_OFFSET_BITS=64
|
||||||
|
|
||||||
from the Makefile, and do 'make clean ; make'. This will give you a
|
from the Makefile, and do 'make clean ; make'. This will give you a
|
||||||
version of bzip2 without large file support, which, for most
|
version of bzip2 without large file support, which, for most
|
||||||
applications, is probably not a problem.
|
applications, is probably not a problem.
|
||||||
|
@ -37,3 +52,7 @@ 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
|
large file support, if you are feeling paranoid. Be aware though that
|
||||||
any compilation problems which affect bzip2 will also affect spewG.c,
|
any compilation problems which affect bzip2 will also affect spewG.c,
|
||||||
alas.
|
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.
|
|
@ -1,3 +1,17 @@
|
||||||
|
----------------------------------------------------------------
|
||||||
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 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.
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
The script xmlproc.sh takes an xml file as input,
|
The script xmlproc.sh takes an xml file as input,
|
||||||
and processes it to create .pdf, .html or .ps output.
|
and processes it to create .pdf, .html or .ps output.
|
||||||
It uses format.pl, a perl script to format <pre> blocks nicely,
|
It uses format.pl, a perl script to format <pre> blocks nicely,
|
||||||
|
@ -9,16 +23,16 @@ version, year, etc.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
|
|
||||||
xmlproc.sh -v manual.xml
|
./xmlproc.sh -v manual.xml
|
||||||
Validates an xml file to ensure no dtd-compliance errors
|
Validates an xml file to ensure no dtd-compliance errors
|
||||||
|
|
||||||
xmlproc.sh -html manual.xml
|
./xmlproc.sh -html manual.xml
|
||||||
Output: manual.html
|
Output: manual.html
|
||||||
|
|
||||||
xmlproc.sh -pdf manual.xml
|
./xmlproc.sh -pdf manual.xml
|
||||||
Output: manual.pdf
|
Output: manual.pdf
|
||||||
|
|
||||||
xmlproc.sh -ps manual.xml
|
./xmlproc.sh -ps manual.xml
|
||||||
Output: manual.ps
|
Output: manual.ps
|
||||||
|
|
||||||
|
|
|
@ -4,66 +4,19 @@
|
||||||
/*--- blocksort.c ---*/
|
/*--- blocksort.c ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2005 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
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, Cambridge, UK.
|
|
||||||
jseward@bzip.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
|
|
||||||
To get some idea how the block sorting algorithms in this file
|
|
||||||
work, read my paper
|
|
||||||
On the Performance of BWT Sorting Algorithms
|
|
||||||
in Proceedings of the IEEE Data Compression Conference 2000,
|
|
||||||
Snowbird, Utah, USA, 27-30 March 2000. The main sort in this
|
|
||||||
file implements the algorithm called cache in the paper.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bzlib_private.h"
|
#include "bzlib_private.h"
|
||||||
|
@ -155,7 +108,7 @@ void fallbackQSort3 ( UInt32* fmap,
|
||||||
|
|
||||||
while (sp > 0) {
|
while (sp > 0) {
|
||||||
|
|
||||||
AssertH ( sp < FALLBACK_QSORT_STACK_SIZE, 1004 );
|
AssertH ( sp < FALLBACK_QSORT_STACK_SIZE - 1, 1004 );
|
||||||
|
|
||||||
fpop ( lo, hi );
|
fpop ( lo, hi );
|
||||||
if (hi - lo < FALLBACK_QSORT_SMALL_THRESH) {
|
if (hi - lo < FALLBACK_QSORT_SMALL_THRESH) {
|
||||||
|
@ -690,7 +643,7 @@ void mainQSort3 ( UInt32* ptr,
|
||||||
|
|
||||||
while (sp > 0) {
|
while (sp > 0) {
|
||||||
|
|
||||||
AssertH ( sp < MAIN_QSORT_STACK_SIZE, 1001 );
|
AssertH ( sp < MAIN_QSORT_STACK_SIZE - 2, 1001 );
|
||||||
|
|
||||||
mpop ( lo, hi, d );
|
mpop ( lo, hi, d );
|
||||||
if (hi - lo < MAIN_QSORT_SMALL_THRESH ||
|
if (hi - lo < MAIN_QSORT_SMALL_THRESH ||
|
19
commands/bzip2/bz-fo.xsl → dist/bzip2/bz-fo.xsl
vendored
19
commands/bzip2/bz-fo.xsl → dist/bzip2/bz-fo.xsl
vendored
|
@ -254,4 +254,23 @@
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Bug-fix for Suse 10 PassiveTex version -->
|
||||||
|
<!-- Precompute attribute values 'cos PassiveTex is too stupid: -->
|
||||||
|
<xsl:attribute-set name="component.title.properties">
|
||||||
|
<xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
|
||||||
|
<xsl:attribute name="space-before.optimum">
|
||||||
|
<xsl:value-of select="concat($body.font.master, 'pt')"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:attribute name="space-before.minimum">
|
||||||
|
<xsl:value-of select="$body.font.master * 0.8"/>
|
||||||
|
<xsl:text>pt</xsl:text>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:attribute name="space-before.maximum">
|
||||||
|
<xsl:value-of select="$body.font.master * 1.2"/>
|
||||||
|
<xsl:text>pt</xsl:text>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:attribute name="hyphenate">false</xsl:attribute>
|
||||||
|
</xsl:attribute-set>
|
||||||
|
|
||||||
|
|
||||||
</xsl:stylesheet>
|
</xsl:stylesheet>
|
4
commands/bzip2/bzdiff → dist/bzip2/bzdiff
vendored
4
commands/bzip2/bzdiff → dist/bzip2/bzdiff
vendored
|
@ -12,7 +12,7 @@
|
||||||
# necessary) and fed to cmp or diff. The exit status from cmp
|
# necessary) and fed to cmp or diff. The exit status from cmp
|
||||||
# or diff is preserved.
|
# or diff is preserved.
|
||||||
|
|
||||||
PATH="/usr/bin:$PATH"; export PATH
|
PATH="/usr/bin:/bin:$PATH"; export PATH
|
||||||
prog=`echo $0 | sed 's|.*/||'`
|
prog=`echo $0 | sed 's|.*/||'`
|
||||||
case "$prog" in
|
case "$prog" in
|
||||||
*cmp) comp=${CMP-cmp} ;;
|
*cmp) comp=${CMP-cmp} ;;
|
||||||
|
@ -37,7 +37,7 @@ if test -z "$FILES"; then
|
||||||
echo "Usage: $prog [${comp}_options] file [file]"
|
echo "Usage: $prog [${comp}_options] file [file]"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
tmp=`tempfile -d /tmp -p bz` || {
|
tmp=`mktemp ${TMPDIR:-/tmp}/bzdiff.XXXXXXXXXX` || {
|
||||||
echo 'cannot create a temporary file' >&2
|
echo 'cannot create a temporary file' >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
6
commands/bzip2/bzgrep → dist/bzip2/bzgrep
vendored
6
commands/bzip2/bzgrep → dist/bzip2/bzgrep
vendored
|
@ -63,7 +63,11 @@ for i do
|
||||||
bzip2 -cdfq "$i" | $grep $opt "$pat"
|
bzip2 -cdfq "$i" | $grep $opt "$pat"
|
||||||
r=$?
|
r=$?
|
||||||
else
|
else
|
||||||
bzip2 -cdfq "$i" | $grep $opt "$pat" | sed "s|^|${i}:|"
|
j=${i//\\/\\\\}
|
||||||
|
j=${j//|/\\|}
|
||||||
|
j=${j//&/\\&}
|
||||||
|
j=`printf "%s" "$j" | tr '\n' ' '`
|
||||||
|
bzip2 -cdfq "$i" | $grep $opt "$pat" | sed "s|^|${j}:|"
|
||||||
r=$?
|
r=$?
|
||||||
fi
|
fi
|
||||||
test "$r" -ne 0 && res="$r"
|
test "$r" -ne 0 && res="$r"
|
BIN
dist/bzip2/bzip2
vendored
Executable file
BIN
dist/bzip2/bzip2
vendored
Executable file
Binary file not shown.
510
dist/bzip2/bzip2.1
vendored
Normal file
510
dist/bzip2/bzip2.1
vendored
Normal file
|
@ -0,0 +1,510 @@
|
||||||
|
.\" $NetBSD: bzip2.1,v 1.9 2010/05/14 16:43:34 joerg Exp $
|
||||||
|
.\"
|
||||||
|
.Dd May 14, 2010
|
||||||
|
.Dt BZIP2 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm bzip2 ,
|
||||||
|
.Nm bunzip2 ,
|
||||||
|
.Nm bzcat ,
|
||||||
|
.Nm bzip2recover
|
||||||
|
.Nd block-sorting file compressor
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm bzip2
|
||||||
|
.Op Fl 123456789cdfkLqstVvz
|
||||||
|
.Op Ar filename Ar
|
||||||
|
.Pp
|
||||||
|
.Nm bunzip2
|
||||||
|
.Op Fl fkLVvs
|
||||||
|
.Op Ar filename Ar
|
||||||
|
.Pp
|
||||||
|
.Nm bzcat
|
||||||
|
.Op Fl s
|
||||||
|
.Op Ar filename Ar
|
||||||
|
.Pp
|
||||||
|
.Nm bzip2recover
|
||||||
|
.Ar filename
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
.Nm 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.
|
||||||
|
.Pp
|
||||||
|
.Nm bzcat
|
||||||
|
decompresses files to stdout, and
|
||||||
|
.Nm bzip2recover
|
||||||
|
recovers data from damaged bzip2 files.
|
||||||
|
.Pp
|
||||||
|
The command-line options are deliberately very similar to
|
||||||
|
those of
|
||||||
|
.Xr gzip 1 ,
|
||||||
|
but they are not identical.
|
||||||
|
.Pp
|
||||||
|
.Nm 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
|
||||||
|
.Dq Pa 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
|
||||||
|
.Tn MS-DOS .
|
||||||
|
.Nm bzip2
|
||||||
|
and
|
||||||
|
.Nm bunzip2
|
||||||
|
will by default not overwrite existing files.
|
||||||
|
If you want this to happen, specify the
|
||||||
|
.Fl f
|
||||||
|
flag.
|
||||||
|
.Pp
|
||||||
|
If no file names are specified,
|
||||||
|
.Nm bzip2
|
||||||
|
compresses from standard input to standard output.
|
||||||
|
In this case,
|
||||||
|
.Nm bzip2
|
||||||
|
will decline to write compressed output to a terminal, as this would
|
||||||
|
be entirely incomprehensible and therefore pointless.
|
||||||
|
.Pp
|
||||||
|
.Nm bunzip2
|
||||||
|
(or
|
||||||
|
.Nm bzip2 Fl d )
|
||||||
|
decompresses all specified files.
|
||||||
|
Files which were not created by
|
||||||
|
.Nm bzip2
|
||||||
|
will be detected and ignored, and a warning issued.
|
||||||
|
.Nm bzip2
|
||||||
|
attempts to guess the filename for the decompressed file
|
||||||
|
from that of the compressed file as follows:
|
||||||
|
.Bl -column "filename.tbz2" "becomes" -offset indent
|
||||||
|
.It Pa filename.bz2 Ta becomes Ta Pa filename
|
||||||
|
.It Pa filename.bz Ta becomes Ta Pa filename
|
||||||
|
.It Pa filename.tbz2 Ta becomes Ta Pa filename.tar
|
||||||
|
.It Pa filename.tbz Ta becomes Ta Pa filename.tar
|
||||||
|
.It Pa anyothername Ta becomes Ta Pa anyothername.out
|
||||||
|
.El
|
||||||
|
.Pp
|
||||||
|
If the file does not end in one of the recognised endings,
|
||||||
|
.Pa .bz2 ,
|
||||||
|
.Pa .bz ,
|
||||||
|
.Pa .tbz2 ,
|
||||||
|
or
|
||||||
|
.Pa .tbz ,
|
||||||
|
.Nm bzip2
|
||||||
|
complains that it cannot guess the name of the original file, and uses
|
||||||
|
the original name with
|
||||||
|
.Pa .out
|
||||||
|
appended.
|
||||||
|
.Pp
|
||||||
|
As with compression, supplying no filenames causes decompression from
|
||||||
|
standard input to standard output.
|
||||||
|
.Pp
|
||||||
|
.Nm 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
|
||||||
|
.Pq Fl t
|
||||||
|
of concatenated compressed files is also supported.
|
||||||
|
.Pp
|
||||||
|
You can also compress or decompress files to the standard output by
|
||||||
|
giving the
|
||||||
|
.Fl 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
|
||||||
|
.Nm bzip2
|
||||||
|
version 0.9.0 or later.
|
||||||
|
Earlier versions of
|
||||||
|
.Nm bzip2
|
||||||
|
will stop after decompressing
|
||||||
|
the first file in the stream.
|
||||||
|
.Pp
|
||||||
|
.Nm bzcat
|
||||||
|
(or
|
||||||
|
.Nm bzip2 Fl dc )
|
||||||
|
decompresses all specified files to the standard output.
|
||||||
|
.Pp
|
||||||
|
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%.
|
||||||
|
.Pp
|
||||||
|
As a self-check for your protection,
|
||||||
|
.Nm 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
|
||||||
|
.Nm 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
|
||||||
|
.Nm bzip2recover
|
||||||
|
to try to recover data from
|
||||||
|
damaged files.
|
||||||
|
.Sh OPTIONS
|
||||||
|
.Bl -tag -width "XXrepetitiveXfastXX"
|
||||||
|
.It Fl Fl
|
||||||
|
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:
|
||||||
|
.Dl bzip2 -- -myfilename .
|
||||||
|
.It Fl 1 , Fl Fl fast
|
||||||
|
to
|
||||||
|
.It Fl 9 , Fl Fl best
|
||||||
|
Set the block size to 100 k, 200 k ... 900 k when compressing.
|
||||||
|
Has no effect when decompressing.
|
||||||
|
See
|
||||||
|
.Sx MEMORY MANAGEMENT
|
||||||
|
below.
|
||||||
|
The
|
||||||
|
.Fl Fl fast
|
||||||
|
and
|
||||||
|
.Fl Fl best
|
||||||
|
aliases are primarily for GNU
|
||||||
|
.Xr gzip 1
|
||||||
|
compatibility.
|
||||||
|
In particular,
|
||||||
|
.Fl Fl fast
|
||||||
|
doesn't make things significantly faster, and
|
||||||
|
.Fl Fl best
|
||||||
|
merely selects the default behaviour.
|
||||||
|
.It Fl c , Fl Fl stdout
|
||||||
|
Compress or decompress to standard output.
|
||||||
|
.It Fl d , Fl Fl decompress
|
||||||
|
Force decompression.
|
||||||
|
.Nm bzip2 ,
|
||||||
|
.Nm bunzip2 ,
|
||||||
|
and
|
||||||
|
.Nm 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
|
||||||
|
.Nm bzip2
|
||||||
|
to decompress.
|
||||||
|
.It Fl f , Fl Fl force
|
||||||
|
Force overwrite of output files.
|
||||||
|
Normally,
|
||||||
|
.Nm bzip2
|
||||||
|
will not overwrite existing output files.
|
||||||
|
Also forces
|
||||||
|
.Nm bzip2
|
||||||
|
to break hard links
|
||||||
|
to files, which it otherwise wouldn't do.
|
||||||
|
.Pp
|
||||||
|
.Nm bzip2
|
||||||
|
normally declines to decompress files which don't have the correct
|
||||||
|
magic header bytes.
|
||||||
|
If forced
|
||||||
|
.Pq Fl f ,
|
||||||
|
however, it will pass such files through unmodified.
|
||||||
|
This is how GNU
|
||||||
|
.Xr gzip 1
|
||||||
|
behaves.
|
||||||
|
.It Fl k , Fl Fl keep
|
||||||
|
Keep (don't delete) input files during compression
|
||||||
|
or decompression.
|
||||||
|
.It Fl L , Fl Fl license
|
||||||
|
Display the license terms and conditions.
|
||||||
|
.It Fl q , Fl Fl quiet
|
||||||
|
Suppress non-essential warning messages.
|
||||||
|
Messages pertaining to I/O errors and other critical events will not
|
||||||
|
be suppressed.
|
||||||
|
.It Fl Fl repetitive-fast
|
||||||
|
.It Fl Fl 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.
|
||||||
|
.It Fl s , Fl Fl 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,
|
||||||
|
.Fl 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
|
||||||
|
.Fl s
|
||||||
|
for everything.
|
||||||
|
See
|
||||||
|
.Sx MEMORY MANAGEMENT
|
||||||
|
below.
|
||||||
|
.It Fl t , Fl Fl test
|
||||||
|
Check integrity of the specified file(s), but don't decompress them.
|
||||||
|
This really performs a trial decompression and throws away the result.
|
||||||
|
.It Fl V , Fl Fl version
|
||||||
|
Display the software version.
|
||||||
|
.It Fl v , Fl Fl verbose
|
||||||
|
Verbose mode: show the compression ratio for each file processed.
|
||||||
|
Further
|
||||||
|
.Fl v Ap s
|
||||||
|
increase the verbosity level, spewing out lots of information which is
|
||||||
|
primarily of interest for diagnostic purposes.
|
||||||
|
.It Fl z , Fl Fl compress
|
||||||
|
The complement to
|
||||||
|
Fl d :
|
||||||
|
forces compression, regardless of the invocation name.
|
||||||
|
.El
|
||||||
|
.Ss MEMORY MANAGEMENT
|
||||||
|
.Nm 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
|
||||||
|
.Fl 1
|
||||||
|
through
|
||||||
|
.Fl 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
|
||||||
|
.Nm bunzip2
|
||||||
|
then allocates itself just enough memory to decompress the file.
|
||||||
|
Since block sizes are stored in compressed files, it follows that the
|
||||||
|
flags
|
||||||
|
.Fl 1
|
||||||
|
to
|
||||||
|
.Fl 9
|
||||||
|
are irrelevant to and so ignored during decompression.
|
||||||
|
.Pp
|
||||||
|
Compression and decompression requirements, in bytes, can be estimated
|
||||||
|
as:
|
||||||
|
.Bl -tag -width "Decompression:" -offset indent
|
||||||
|
.It Compression :
|
||||||
|
400k + ( 8 x block size )
|
||||||
|
.It Decompression :
|
||||||
|
100k + ( 4 x block size ), or 100k + ( 2.5 x block size )
|
||||||
|
.El
|
||||||
|
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
|
||||||
|
.Nm 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.
|
||||||
|
.Pp
|
||||||
|
For files compressed with the default 900k block size,
|
||||||
|
.Nm bunzip2
|
||||||
|
will require about 3700 kbytes to decompress.
|
||||||
|
To support decompression of any file on a 4 megabyte machine,
|
||||||
|
.Nm 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
|
||||||
|
.Fl s .
|
||||||
|
.Pp
|
||||||
|
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.
|
||||||
|
.Pp
|
||||||
|
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
|
||||||
|
.Fl 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.
|
||||||
|
.Pp
|
||||||
|
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.
|
||||||
|
.Bl -column "Flag" "Compression" "Decompression" "DecompressionXXs" "Corpus size"
|
||||||
|
.It Sy Flag Ta Sy Compression Ta Sy Decompression Ta Sy Decompression Fl s Ta Sy Corpus size
|
||||||
|
.It -1 Ta 1200k Ta 500k Ta 350k Ta 914704
|
||||||
|
.It -2 Ta 2000k Ta 900k Ta 600k Ta 877703
|
||||||
|
.It -3 Ta 2800k Ta 1300k Ta 850k Ta 860338
|
||||||
|
.It -4 Ta 3600k Ta 1700k Ta 1100k Ta 846899
|
||||||
|
.It -5 Ta 4400k Ta 2100k Ta 1350k Ta 845160
|
||||||
|
.It -6 Ta 5200k Ta 2500k Ta 1600k Ta 838626
|
||||||
|
.It -7 Ta 6100k Ta 2900k Ta 1850k Ta 834096
|
||||||
|
.It -8 Ta 6800k Ta 3300k Ta 2100k Ta 828642
|
||||||
|
.It -9 Ta 7600k Ta 3700k Ta 2350k Ta 828642
|
||||||
|
.El
|
||||||
|
.Ss RECOVERING DATA FROM DAMAGED FILES
|
||||||
|
.Nm bzip2
|
||||||
|
compresses files in blocks, usually 900kbytes long.
|
||||||
|
Each block is handled independently.
|
||||||
|
If a media or transmission error causes a multi-block
|
||||||
|
.Pa .bz2
|
||||||
|
file to become damaged, it may be possible to recover data from the
|
||||||
|
undamaged blocks in the file.
|
||||||
|
.Pp
|
||||||
|
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.
|
||||||
|
.Pp
|
||||||
|
.Nm bzip2recover
|
||||||
|
is a simple program whose purpose is to search for blocks in
|
||||||
|
.Pa .bz2
|
||||||
|
files, and write each block out into its own
|
||||||
|
.Pa .bz2
|
||||||
|
file.
|
||||||
|
You can then use
|
||||||
|
.Nm bzip2
|
||||||
|
.Fl t
|
||||||
|
to test the integrity of the resulting files, and decompress those
|
||||||
|
which are undamaged.
|
||||||
|
.Pp
|
||||||
|
.Nm bzip2recover
|
||||||
|
takes a single argument, the name of the damaged file, and writes a
|
||||||
|
number of files
|
||||||
|
.Dq Pa rec00001file.bz2 ,
|
||||||
|
.Dq Pa rec00002file.bz2 ,
|
||||||
|
etc., containing the extracted blocks.
|
||||||
|
The output filenames are designed so that the use of wildcards in
|
||||||
|
subsequent processing -- for example,
|
||||||
|
.Dl bzip2 -dc rec*file.bz2 \*[Gt] recovered_data
|
||||||
|
-- processes the files in the correct order.
|
||||||
|
.Pp
|
||||||
|
.Nm bzip2recover
|
||||||
|
should be of most use dealing with large
|
||||||
|
.Pa .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.
|
||||||
|
.Ss 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
|
||||||
|
.Dq 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
|
||||||
|
.Fl vvvv
|
||||||
|
option to monitor progress in great detail, if you want.
|
||||||
|
.Pp
|
||||||
|
Decompression speed is unaffected by these phenomena.
|
||||||
|
.Pp
|
||||||
|
.Nm 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
|
||||||
|
.Nm bzip2
|
||||||
|
will perform best on machines with very large caches.
|
||||||
|
.Sh ENVIRONMENT
|
||||||
|
.Nm bzip2
|
||||||
|
will read arguments from the environment variables
|
||||||
|
.Ev BZIP2
|
||||||
|
and
|
||||||
|
.Ev 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.
|
||||||
|
.Sh EXIT STATUS
|
||||||
|
0 for a normal exit, 1 for environmental problems (file not found,
|
||||||
|
invalid flags, I/O errors, etc.), 2 to indicate a corrupt compressed
|
||||||
|
file, 3 for an internal consistency error (e.g., bug) which caused
|
||||||
|
.Nm bzip2
|
||||||
|
to panic.
|
||||||
|
.Sh AUTHORS
|
||||||
|
.An -nosplit
|
||||||
|
.An Julian Seward
|
||||||
|
.Aq jseward@bzip.org
|
||||||
|
.Pp
|
||||||
|
.Pa http://www.bzip.org
|
||||||
|
.Pp
|
||||||
|
The ideas embodied in
|
||||||
|
.Nm bzip2
|
||||||
|
are due to (at least) the following people:
|
||||||
|
.An Michael Burrows
|
||||||
|
and
|
||||||
|
.An David Wheeler
|
||||||
|
(for the block sorting transformation),
|
||||||
|
.An David Wheeler
|
||||||
|
(again, for the Huffman coder),
|
||||||
|
.An Peter Fenwick
|
||||||
|
(for the structured coding model in the original
|
||||||
|
.Nm bzip ,
|
||||||
|
and many refinements), and
|
||||||
|
.An Alistair Moffat ,
|
||||||
|
.An Radford Neal ,
|
||||||
|
and
|
||||||
|
.An Ian Witten
|
||||||
|
(for the arithmetic coder in the original
|
||||||
|
.Nm 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.
|
||||||
|
.Sh CAVEATS
|
||||||
|
I/O error messages are not as helpful as they could be.
|
||||||
|
.Nm bzip2
|
||||||
|
tries hard to detect I/O errors and exit cleanly, but the details of
|
||||||
|
what the problem is sometimes seem rather misleading.
|
||||||
|
.Pp
|
||||||
|
This manual page pertains to version 1.0.5 of
|
||||||
|
.Nm 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 1.0.3, 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.
|
||||||
|
.Pp
|
||||||
|
.Nm 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
|
||||||
|
.Nm 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.
|
210
commands/bzip2/bzip2.c → dist/bzip2/bzip2.c
vendored
210
commands/bzip2/bzip2.c → dist/bzip2/bzip2.c
vendored
|
@ -1,120 +1,30 @@
|
||||||
|
/* $NetBSD: bzip2.c,v 1.8 2009/04/11 11:10:43 lukem Exp $ */
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
/*--- A block-sorting, lossless compressor bzip2.c ---*/
|
/*--- A block-sorting, lossless compressor bzip2.c ---*/
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2005 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
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, Cambridge, UK.
|
|
||||||
jseward@bzip.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------*/
|
/* Place a 1 beside your platform, and 0 elsewhere.
|
||||||
/*--- IMPORTANT ---*/
|
Generic 32-bit Unix.
|
||||||
/*----------------------------------------------------*/
|
Also works on 64-bit Unix boxes.
|
||||||
|
This is the default.
|
||||||
/*--
|
*/
|
||||||
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 disasterous loss of data.
|
|
||||||
|
|
||||||
DISCLAIMER:
|
|
||||||
I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE
|
|
||||||
USE OF THIS PROGRAM, 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 AND/OR LIBRARY 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
|
|
||||||
available to carry out a full patent search. Therefore I cannot
|
|
||||||
give any guarantee of the above statement.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------*/
|
|
||||||
/*--- and now for something much more pleasant :-) ---*/
|
|
||||||
/*----------------------------------------------------*/
|
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
|
||||||
/*--
|
|
||||||
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
|
#define BZ_UNIX 1
|
||||||
|
|
||||||
/*--
|
/*--
|
||||||
|
@ -302,18 +212,20 @@ Char progNameReally[FILE_NAME_LEN];
|
||||||
FILE *outputHandleJustInCase;
|
FILE *outputHandleJustInCase;
|
||||||
Int32 workFactor;
|
Int32 workFactor;
|
||||||
|
|
||||||
static void panic ( Char* ) NORETURN;
|
static void panic ( const Char* ) NORETURN;
|
||||||
static void ioError ( void ) NORETURN;
|
static void ioError ( void ) NORETURN;
|
||||||
static void outOfMemory ( void ) NORETURN;
|
static void outOfMemory ( void ) NORETURN;
|
||||||
static void configError ( void ) NORETURN;
|
static void configError ( void ) NORETURN;
|
||||||
static void crcError ( void ) NORETURN;
|
static void crcError ( void ) NORETURN;
|
||||||
static void cleanUpAndFail ( Int32 ) NORETURN;
|
static void cleanUpAndFail ( Int32 ) NORETURN;
|
||||||
static void compressedStreamEOF ( void ) NORETURN;
|
static void compressedStreamEOF ( void ) NORETURN;
|
||||||
|
|
||||||
static void copyFileName ( Char*, Char* );
|
static void copyFileName ( Char*, const Char* );
|
||||||
static void* myMalloc ( Int32 );
|
static void* myMalloc ( Int32 );
|
||||||
|
static void applySavedFileAttrToOutputFile ( IntNative fd );
|
||||||
|
|
||||||
|
|
||||||
|
static FILE* fopen_output_safely ( Char*, const char* );
|
||||||
|
|
||||||
/*---------------------------------------------------*/
|
/*---------------------------------------------------*/
|
||||||
/*--- An implementation of 64-bit ints. Sigh. ---*/
|
/*--- An implementation of 64-bit ints. Sigh. ---*/
|
||||||
|
@ -457,6 +369,9 @@ void compressStream ( FILE *stream, FILE *zStream )
|
||||||
ret = fflush ( zStream );
|
ret = fflush ( zStream );
|
||||||
if (ret == EOF) goto errhandler_io;
|
if (ret == EOF) goto errhandler_io;
|
||||||
if (zStream != stdout) {
|
if (zStream != stdout) {
|
||||||
|
Int32 fd = fileno ( zStream );
|
||||||
|
if (fd < 0) goto errhandler_io;
|
||||||
|
applySavedFileAttrToOutputFile ( fd );
|
||||||
ret = fclose ( zStream );
|
ret = fclose ( zStream );
|
||||||
outputHandleJustInCase = NULL;
|
outputHandleJustInCase = NULL;
|
||||||
if (ret == EOF) goto errhandler_io;
|
if (ret == EOF) goto errhandler_io;
|
||||||
|
@ -525,7 +440,7 @@ Bool uncompressStream ( FILE *zStream, FILE *stream )
|
||||||
UChar obuf[5000];
|
UChar obuf[5000];
|
||||||
UChar unused[BZ_MAX_UNUSED];
|
UChar unused[BZ_MAX_UNUSED];
|
||||||
Int32 nUnused;
|
Int32 nUnused;
|
||||||
void* unusedTmpV;
|
void* unusedTmpV = NULL;
|
||||||
UChar* unusedTmp;
|
UChar* unusedTmp;
|
||||||
|
|
||||||
nUnused = 0;
|
nUnused = 0;
|
||||||
|
@ -555,7 +470,7 @@ Bool uncompressStream ( FILE *zStream, FILE *stream )
|
||||||
}
|
}
|
||||||
if (bzerr != BZ_STREAM_END) goto errhandler;
|
if (bzerr != BZ_STREAM_END) goto errhandler;
|
||||||
|
|
||||||
BZ2_bzReadGetUnused ( &bzerr, bzf, &unusedTmpV, &nUnused );
|
BZ2_bzReadGetUnused ( &bzerr, bzf, (void*)(&unusedTmpV), &nUnused );
|
||||||
if (bzerr != BZ_OK) panic ( "decompress:bzReadGetUnused" );
|
if (bzerr != BZ_OK) panic ( "decompress:bzReadGetUnused" );
|
||||||
|
|
||||||
unusedTmp = (UChar*)unusedTmpV;
|
unusedTmp = (UChar*)unusedTmpV;
|
||||||
|
@ -569,6 +484,11 @@ Bool uncompressStream ( FILE *zStream, FILE *stream )
|
||||||
|
|
||||||
closeok:
|
closeok:
|
||||||
if (ferror(zStream)) goto errhandler_io;
|
if (ferror(zStream)) goto errhandler_io;
|
||||||
|
if (stream != stdout) {
|
||||||
|
Int32 fd = fileno ( stream );
|
||||||
|
if (fd < 0) goto errhandler_io;
|
||||||
|
applySavedFileAttrToOutputFile ( fd );
|
||||||
|
}
|
||||||
ret = fclose ( zStream );
|
ret = fclose ( zStream );
|
||||||
if (ret == EOF) goto errhandler_io;
|
if (ret == EOF) goto errhandler_io;
|
||||||
|
|
||||||
|
@ -641,8 +561,8 @@ Bool testStream ( FILE *zStream )
|
||||||
UChar obuf[5000];
|
UChar obuf[5000];
|
||||||
UChar unused[BZ_MAX_UNUSED];
|
UChar unused[BZ_MAX_UNUSED];
|
||||||
Int32 nUnused;
|
Int32 nUnused;
|
||||||
void* unusedTmpV;
|
void* unusedTmpV = NULL;
|
||||||
UChar* unusedTmp;
|
UChar* unusedTmp = NULL;
|
||||||
|
|
||||||
nUnused = 0;
|
nUnused = 0;
|
||||||
streamNo = 0;
|
streamNo = 0;
|
||||||
|
@ -665,7 +585,7 @@ Bool testStream ( FILE *zStream )
|
||||||
}
|
}
|
||||||
if (bzerr != BZ_STREAM_END) goto errhandler;
|
if (bzerr != BZ_STREAM_END) goto errhandler;
|
||||||
|
|
||||||
BZ2_bzReadGetUnused ( &bzerr, bzf, &unusedTmpV, &nUnused );
|
BZ2_bzReadGetUnused ( &bzerr, bzf, (void*)(&unusedTmpV), &nUnused );
|
||||||
if (bzerr != BZ_OK) panic ( "test:bzReadGetUnused" );
|
if (bzerr != BZ_OK) panic ( "test:bzReadGetUnused" );
|
||||||
|
|
||||||
unusedTmp = (UChar*)unusedTmpV;
|
unusedTmp = (UChar*)unusedTmpV;
|
||||||
|
@ -826,7 +746,7 @@ void cleanUpAndFail ( Int32 ec )
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
static
|
static
|
||||||
void panic ( Char* s )
|
void panic ( const Char* s )
|
||||||
{
|
{
|
||||||
fprintf ( stderr,
|
fprintf ( stderr,
|
||||||
"\n%s: PANIC -- internal consistency error:\n"
|
"\n%s: PANIC -- internal consistency error:\n"
|
||||||
|
@ -895,6 +815,7 @@ void mySignalCatcher ( IntNative n )
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
|
#ifndef SMALL
|
||||||
static
|
static
|
||||||
void mySIGSEGVorSIGBUScatcher ( IntNative n )
|
void mySIGSEGVorSIGBUScatcher ( IntNative n )
|
||||||
{
|
{
|
||||||
|
@ -948,6 +869,7 @@ void mySIGSEGVorSIGBUScatcher ( IntNative n )
|
||||||
cleanUpAndFail( 3 ); else
|
cleanUpAndFail( 3 ); else
|
||||||
{ cadvise(); cleanUpAndFail( 2 ); }
|
{ cadvise(); cleanUpAndFail( 2 ); }
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
|
@ -999,7 +921,7 @@ void pad ( Char *s )
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
static
|
static
|
||||||
void copyFileName ( Char* to, Char* from )
|
void copyFileName ( Char* to, const Char* from )
|
||||||
{
|
{
|
||||||
if ( strlen(from) > FILE_NAME_LEN-10 ) {
|
if ( strlen(from) > FILE_NAME_LEN-10 ) {
|
||||||
fprintf (
|
fprintf (
|
||||||
|
@ -1039,6 +961,7 @@ Bool fileExists ( Char* name )
|
||||||
For non-Unix platforms, if we are not worrying about
|
For non-Unix platforms, if we are not worrying about
|
||||||
security issues, simple this simply behaves like fopen.
|
security issues, simple this simply behaves like fopen.
|
||||||
*/
|
*/
|
||||||
|
static
|
||||||
FILE* fopen_output_safely ( Char* name, const char* mode )
|
FILE* fopen_output_safely ( Char* name, const char* mode )
|
||||||
{
|
{
|
||||||
# if BZ_UNIX
|
# if BZ_UNIX
|
||||||
|
@ -1129,7 +1052,7 @@ void saveInputFileMetaInfo ( Char *srcName )
|
||||||
|
|
||||||
|
|
||||||
static
|
static
|
||||||
void applySavedMetaInfoToOutputFile ( Char *dstName )
|
void applySavedTimeInfoToOutputFile ( Char *dstName )
|
||||||
{
|
{
|
||||||
# if BZ_UNIX
|
# if BZ_UNIX
|
||||||
IntNative retVal;
|
IntNative retVal;
|
||||||
|
@ -1138,13 +1061,21 @@ void applySavedMetaInfoToOutputFile ( Char *dstName )
|
||||||
uTimBuf.actime = fileMetaInfo.st_atime;
|
uTimBuf.actime = fileMetaInfo.st_atime;
|
||||||
uTimBuf.modtime = fileMetaInfo.st_mtime;
|
uTimBuf.modtime = fileMetaInfo.st_mtime;
|
||||||
|
|
||||||
retVal = chmod ( dstName, fileMetaInfo.st_mode );
|
|
||||||
ERROR_IF_NOT_ZERO ( retVal );
|
|
||||||
|
|
||||||
retVal = utime ( dstName, &uTimBuf );
|
retVal = utime ( dstName, &uTimBuf );
|
||||||
ERROR_IF_NOT_ZERO ( retVal );
|
ERROR_IF_NOT_ZERO ( retVal );
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
|
||||||
retVal = chown ( dstName, fileMetaInfo.st_uid, fileMetaInfo.st_gid );
|
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
|
/* chown() will in many cases return with EPERM, which can
|
||||||
be safely ignored.
|
be safely ignored.
|
||||||
*/
|
*/
|
||||||
|
@ -1175,13 +1106,13 @@ Bool containsDubiousChars ( Char* name )
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
#define BZ_N_SUFFIX_PAIRS 4
|
#define BZ_N_SUFFIX_PAIRS 4
|
||||||
|
|
||||||
Char* zSuffix[BZ_N_SUFFIX_PAIRS]
|
const Char* zSuffix[BZ_N_SUFFIX_PAIRS]
|
||||||
= { ".bz2", ".bz", ".tbz2", ".tbz" };
|
= { ".bz2", ".bz", ".tbz2", ".tbz" };
|
||||||
Char* unzSuffix[BZ_N_SUFFIX_PAIRS]
|
const Char* unzSuffix[BZ_N_SUFFIX_PAIRS]
|
||||||
= { "", "", ".tar", ".tar" };
|
= { "", "", ".tar", ".tar" };
|
||||||
|
|
||||||
static
|
static
|
||||||
Bool hasSuffix ( Char* s, Char* suffix )
|
Bool hasSuffix ( Char* s, const Char* suffix )
|
||||||
{
|
{
|
||||||
Int32 ns = strlen(s);
|
Int32 ns = strlen(s);
|
||||||
Int32 nx = strlen(suffix);
|
Int32 nx = strlen(suffix);
|
||||||
|
@ -1192,7 +1123,8 @@ Bool hasSuffix ( Char* s, Char* suffix )
|
||||||
|
|
||||||
static
|
static
|
||||||
Bool mapSuffix ( Char* name,
|
Bool mapSuffix ( Char* name,
|
||||||
Char* oldSuffix, Char* newSuffix )
|
const Char* oldSuffix,
|
||||||
|
const Char* newSuffix )
|
||||||
{
|
{
|
||||||
if (!hasSuffix(name,oldSuffix)) return False;
|
if (!hasSuffix(name,oldSuffix)) return False;
|
||||||
name[strlen(name)-strlen(oldSuffix)] = 0;
|
name[strlen(name)-strlen(oldSuffix)] = 0;
|
||||||
|
@ -1370,7 +1302,7 @@ void compress ( Char *name )
|
||||||
|
|
||||||
/*--- If there was an I/O error, we won't get here. ---*/
|
/*--- If there was an I/O error, we won't get here. ---*/
|
||||||
if ( srcMode == SM_F2F ) {
|
if ( srcMode == SM_F2F ) {
|
||||||
applySavedMetaInfoToOutputFile ( outName );
|
applySavedTimeInfoToOutputFile ( outName );
|
||||||
deleteOutputOnInterrupt = False;
|
deleteOutputOnInterrupt = False;
|
||||||
if ( !keepInputFiles ) {
|
if ( !keepInputFiles ) {
|
||||||
IntNative retVal = remove ( inName );
|
IntNative retVal = remove ( inName );
|
||||||
|
@ -1548,7 +1480,7 @@ void uncompress ( Char *name )
|
||||||
/*--- If there was an I/O error, we won't get here. ---*/
|
/*--- If there was an I/O error, we won't get here. ---*/
|
||||||
if ( magicNumberOK ) {
|
if ( magicNumberOK ) {
|
||||||
if ( srcMode == SM_F2F ) {
|
if ( srcMode == SM_F2F ) {
|
||||||
applySavedMetaInfoToOutputFile ( outName );
|
applySavedTimeInfoToOutputFile ( outName );
|
||||||
deleteOutputOnInterrupt = False;
|
deleteOutputOnInterrupt = False;
|
||||||
if ( !keepInputFiles ) {
|
if ( !keepInputFiles ) {
|
||||||
IntNative retVal = remove ( inName );
|
IntNative retVal = remove ( inName );
|
||||||
|
@ -1678,11 +1610,11 @@ void license ( void )
|
||||||
"bzip2, a block-sorting file compressor. "
|
"bzip2, a block-sorting file compressor. "
|
||||||
"Version %s.\n"
|
"Version %s.\n"
|
||||||
" \n"
|
" \n"
|
||||||
" Copyright (C) 1996-2005 by Julian Seward.\n"
|
" Copyright (C) 1996-2007 by Julian Seward.\n"
|
||||||
" \n"
|
" \n"
|
||||||
" This program is free software; you can redistribute it and/or modify\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"
|
" it under the terms set out in the LICENSE file, which is included\n"
|
||||||
" in the bzip2-1.0 source distribution.\n"
|
" in the bzip2-1.0.5 source distribution.\n"
|
||||||
" \n"
|
" \n"
|
||||||
" This program is distributed in the hope that it will be useful,\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"
|
" but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
|
||||||
|
@ -1817,7 +1749,7 @@ Cell *snocString ( Cell *root, Char *name )
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
static
|
static
|
||||||
void addFlagsFromEnvVar ( Cell** argList, Char* varName )
|
void addFlagsFromEnvVar ( Cell** argList, const Char* varName )
|
||||||
{
|
{
|
||||||
Int32 i, j, k;
|
Int32 i, j, k;
|
||||||
Char *envbase, *p;
|
Char *envbase, *p;
|
||||||
|
@ -1877,6 +1809,7 @@ IntNative main ( IntNative argc, Char *argv[] )
|
||||||
exitValue = 0;
|
exitValue = 0;
|
||||||
i = j = 0; /* avoid bogus warning from egcs-1.1.X */
|
i = j = 0; /* avoid bogus warning from egcs-1.1.X */
|
||||||
|
|
||||||
|
#ifndef SMALL
|
||||||
/*-- Set up signal handlers for mem access errors --*/
|
/*-- Set up signal handlers for mem access errors --*/
|
||||||
signal (SIGSEGV, mySIGSEGVorSIGBUScatcher);
|
signal (SIGSEGV, mySIGSEGVorSIGBUScatcher);
|
||||||
# if BZ_UNIX
|
# if BZ_UNIX
|
||||||
|
@ -1884,6 +1817,7 @@ IntNative main ( IntNative argc, Char *argv[] )
|
||||||
signal (SIGBUS, mySIGSEGVorSIGBUScatcher);
|
signal (SIGBUS, mySIGSEGVorSIGBUScatcher);
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
copyFileName ( inName, "(none)" );
|
copyFileName ( inName, "(none)" );
|
||||||
copyFileName ( outName, "(none)" );
|
copyFileName ( outName, "(none)" );
|
||||||
|
@ -1938,10 +1872,6 @@ IntNative main ( IntNative argc, Char *argv[] )
|
||||||
srcMode = (numFileNames == 0) ? SM_I2O : SM_F2O;
|
srcMode = (numFileNames == 0) ? SM_I2O : SM_F2O;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(strstr ( progName, "small" ) != 0) {
|
|
||||||
smallMode = True;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*-- Look at the flags. --*/
|
/*-- Look at the flags. --*/
|
||||||
for (aa = argList; aa != NULL; aa = aa->link) {
|
for (aa = argList; aa != NULL; aa = aa->link) {
|
123
dist/bzip2/bzip2netbsd
vendored
Executable file
123
dist/bzip2/bzip2netbsd
vendored
Executable file
|
@ -0,0 +1,123 @@
|
||||||
|
#! /bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: bzip2netbsd,v 1.3 2008/04/30 13:10:47 martin Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 1998, 1999, 2001 The NetBSD Foundation, Inc.
|
||||||
|
# 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. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``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 FOUNDATION OR CONTRIBUTORS
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# bzip2netbsd: convert a bzip2 source tree into a
|
||||||
|
# netbsd bzip2 source tree, under basesrc/dist,
|
||||||
|
# based on the other *2netbsd scripts in the NetBSD source tree
|
||||||
|
#
|
||||||
|
# Rough instructions for importing new bzip2 release:
|
||||||
|
#
|
||||||
|
# $ cd /some/where/temporary
|
||||||
|
# $ tar xpfz /new/bzip2/release/tar/file
|
||||||
|
# $ sh /usr/src/dist/bzip2/bzip2netbsd bzip2-1.x.y `pwd`
|
||||||
|
# $ cd basesrc/dist/bzip2
|
||||||
|
# $ cvs import -m "Import bzip2 1.x.y" basesrc/dist/bzip2 JSEWARD bzip2-1-x-y
|
||||||
|
# $ cd ../../..
|
||||||
|
# $ rm -r basesrc bzip2-1.x.y
|
||||||
|
#
|
||||||
|
# - check makefiles to see if any extra sources have been added.
|
||||||
|
# - update distrib/sets if necessary.
|
||||||
|
|
||||||
|
if [ $# -ne 2 ]; then echo "bzip2netbsd src dest"; exit 1; fi
|
||||||
|
|
||||||
|
r=$1
|
||||||
|
d=$2/basesrc/dist/bzip2
|
||||||
|
|
||||||
|
case "$d" in
|
||||||
|
/*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
d=`/bin/pwd`/$d
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$r" in
|
||||||
|
/*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
r=`/bin/pwd`/$r
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo preparing directory $d
|
||||||
|
rm -rf $d
|
||||||
|
mkdir -p $d
|
||||||
|
|
||||||
|
### Copy the files and directories
|
||||||
|
echo copying $r to $d
|
||||||
|
cd $r
|
||||||
|
pax -rw * $d
|
||||||
|
|
||||||
|
# cd to import directory
|
||||||
|
cd $d
|
||||||
|
|
||||||
|
### delete formatted manual pages
|
||||||
|
echo removing unneeded directories and files
|
||||||
|
rm -f bzip2.1.preformatted bzip2.txt
|
||||||
|
|
||||||
|
### bzip2 distribution doesn't have RCS/CVS tags (!).
|
||||||
|
|
||||||
|
### Add our NetBSD RCS Id
|
||||||
|
find $d -type f -name '*.[chly]' -print | while read c; do
|
||||||
|
sed 1q < $c | grep -q '\$NetBSD' || (
|
||||||
|
echo "/* \$NetBSD\$ */" >/tmp/bzip3n$$
|
||||||
|
echo "" >>/tmp/bzip3n$$
|
||||||
|
cat $c >> /tmp/bzip3n$$
|
||||||
|
mv /tmp/bzip3n$$ $c && echo added NetBSD RCS tag to $c
|
||||||
|
)
|
||||||
|
done
|
||||||
|
|
||||||
|
find $d -type f -name '*.[0-9]' -print | while read m; do
|
||||||
|
sed 1q < $m | grep -q '\$NetBSD' || (
|
||||||
|
echo ".\\\" \$NetBSD\$" >/tmp/bzip2m$$
|
||||||
|
echo ".\\\"" >>/tmp/bzip2m$$
|
||||||
|
cat $m >> /tmp/bzip2m$$
|
||||||
|
mv /tmp/bzip2m$$ $m && echo added NetBSD RCS tag to $m
|
||||||
|
)
|
||||||
|
done
|
||||||
|
|
||||||
|
echo done
|
||||||
|
|
||||||
|
### Clean up any CVS directories that might be around.
|
||||||
|
echo "cleaning up CVS residue."
|
||||||
|
(
|
||||||
|
cd $d
|
||||||
|
find . -type d -name "CVS" -print | xargs rm -r
|
||||||
|
)
|
||||||
|
echo done
|
||||||
|
|
||||||
|
### Fixing file and directory permissions.
|
||||||
|
echo "Fixing file/directory permissions."
|
||||||
|
(
|
||||||
|
cd $d
|
||||||
|
find . -type f -print | xargs chmod u+rw,go+r
|
||||||
|
find . -type d -print | xargs chmod u+rwx,go+rx
|
||||||
|
)
|
||||||
|
echo done
|
||||||
|
|
||||||
|
exit 0
|
BIN
dist/bzip2/bzip2recover
vendored
Executable file
BIN
dist/bzip2/bzip2recover
vendored
Executable file
Binary file not shown.
|
@ -1,56 +1,27 @@
|
||||||
|
/* $NetBSD: bzip2recover.c,v 1.7 2008/03/18 17:35:36 christos Exp $ */
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
/*--- Block recoverer program for bzip2 ---*/
|
/*--- Block recoverer program for bzip2 ---*/
|
||||||
/*--- bzip2recover.c ---*/
|
/*--- bzip2recover.c ---*/
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This program is bzip2recover, a program to attempt data
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
salvage from damaged files created by the accompanying
|
lossless, block-sorting data compression.
|
||||||
bzip2-1.0.3 program.
|
|
||||||
|
|
||||||
Copyright (C) 1996-2005 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
|
|
||||||
2. The origin of this software must not be misrepresented; you must
|
/* This program is a complete hack and should be rewritten properly.
|
||||||
not claim that you wrote the original software. If you use this
|
It isn't very complicated. */
|
||||||
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, Cambridge, UK.
|
|
||||||
jseward@bzip.org
|
|
||||||
bzip2/libbzip2 version 1.0.3 of 15 February 2005
|
|
||||||
--*/
|
|
||||||
|
|
||||||
/*--
|
|
||||||
This program is a complete hack and should be rewritten
|
|
||||||
properly. It isn't very complicated.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
@ -98,6 +69,32 @@ Char progName[BZ_MAX_FILENAME];
|
||||||
MaybeUInt64 bytesOut = 0;
|
MaybeUInt64 bytesOut = 0;
|
||||||
MaybeUInt64 bytesIn = 0;
|
MaybeUInt64 bytesIn = 0;
|
||||||
|
|
||||||
|
/*---------------------------------------------------*/
|
||||||
|
/*--- Bit stream I/O ---*/
|
||||||
|
/*---------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef
|
||||||
|
struct {
|
||||||
|
FILE* handle;
|
||||||
|
Int32 buffer;
|
||||||
|
Int32 buffLive;
|
||||||
|
Char mode;
|
||||||
|
}
|
||||||
|
BitStream;
|
||||||
|
|
||||||
|
static void readError ( void );
|
||||||
|
static void writeError ( void );
|
||||||
|
static void mallocFail ( Int32 n );
|
||||||
|
static BitStream* bsOpenReadStream ( FILE* stream );
|
||||||
|
static BitStream* bsOpenWriteStream ( FILE* stream );
|
||||||
|
static void bsPutBit ( BitStream* bs, Int32 bit );
|
||||||
|
static Int32 bsGetBit ( BitStream* bs );
|
||||||
|
static void bsClose ( BitStream* bs );
|
||||||
|
static void bsPutUChar ( BitStream* bs, UChar c );
|
||||||
|
static void bsPutUInt32 ( BitStream* bs, UInt32 c );
|
||||||
|
static Bool endsInBz2 ( Char* name );
|
||||||
|
static void tooManyBlocks ( Int32 max_handled_blocks );
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------*/
|
/*---------------------------------------------------*/
|
||||||
/*--- Header bytes ---*/
|
/*--- Header bytes ---*/
|
||||||
|
@ -114,7 +111,7 @@ MaybeUInt64 bytesIn = 0;
|
||||||
/*---------------------------------------------------*/
|
/*---------------------------------------------------*/
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
void readError ( void )
|
static void readError ( void )
|
||||||
{
|
{
|
||||||
fprintf ( stderr,
|
fprintf ( stderr,
|
||||||
"%s: I/O error reading `%s', possible reason follows.\n",
|
"%s: I/O error reading `%s', possible reason follows.\n",
|
||||||
|
@ -127,7 +124,7 @@ void readError ( void )
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
void writeError ( void )
|
static void writeError ( void )
|
||||||
{
|
{
|
||||||
fprintf ( stderr,
|
fprintf ( stderr,
|
||||||
"%s: I/O error reading `%s', possible reason follows.\n",
|
"%s: I/O error reading `%s', possible reason follows.\n",
|
||||||
|
@ -140,7 +137,7 @@ void writeError ( void )
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
void mallocFail ( Int32 n )
|
static void mallocFail ( Int32 n )
|
||||||
{
|
{
|
||||||
fprintf ( stderr,
|
fprintf ( stderr,
|
||||||
"%s: malloc failed on request for %d bytes.\n",
|
"%s: malloc failed on request for %d bytes.\n",
|
||||||
|
@ -152,7 +149,7 @@ void mallocFail ( Int32 n )
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
void tooManyBlocks ( Int32 max_handled_blocks )
|
static void tooManyBlocks ( Int32 max_handled_blocks )
|
||||||
{
|
{
|
||||||
fprintf ( stderr,
|
fprintf ( stderr,
|
||||||
"%s: `%s' appears to contain more than %d blocks\n",
|
"%s: `%s' appears to contain more than %d blocks\n",
|
||||||
|
@ -168,22 +165,8 @@ void tooManyBlocks ( Int32 max_handled_blocks )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------*/
|
|
||||||
/*--- Bit stream I/O ---*/
|
|
||||||
/*---------------------------------------------------*/
|
|
||||||
|
|
||||||
typedef
|
|
||||||
struct {
|
|
||||||
FILE* handle;
|
|
||||||
Int32 buffer;
|
|
||||||
Int32 buffLive;
|
|
||||||
Char mode;
|
|
||||||
}
|
|
||||||
BitStream;
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
BitStream* bsOpenReadStream ( FILE* stream )
|
static BitStream* bsOpenReadStream ( FILE* stream )
|
||||||
{
|
{
|
||||||
BitStream *bs = malloc ( sizeof(BitStream) );
|
BitStream *bs = malloc ( sizeof(BitStream) );
|
||||||
if (bs == NULL) mallocFail ( sizeof(BitStream) );
|
if (bs == NULL) mallocFail ( sizeof(BitStream) );
|
||||||
|
@ -196,7 +179,7 @@ BitStream* bsOpenReadStream ( FILE* stream )
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
BitStream* bsOpenWriteStream ( FILE* stream )
|
static BitStream* bsOpenWriteStream ( FILE* stream )
|
||||||
{
|
{
|
||||||
BitStream *bs = malloc ( sizeof(BitStream) );
|
BitStream *bs = malloc ( sizeof(BitStream) );
|
||||||
if (bs == NULL) mallocFail ( sizeof(BitStream) );
|
if (bs == NULL) mallocFail ( sizeof(BitStream) );
|
||||||
|
@ -209,7 +192,7 @@ BitStream* bsOpenWriteStream ( FILE* stream )
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
void bsPutBit ( BitStream* bs, Int32 bit )
|
static void bsPutBit ( BitStream* bs, Int32 bit )
|
||||||
{
|
{
|
||||||
if (bs->buffLive == 8) {
|
if (bs->buffLive == 8) {
|
||||||
Int32 retVal = putc ( (UChar) bs->buffer, bs->handle );
|
Int32 retVal = putc ( (UChar) bs->buffer, bs->handle );
|
||||||
|
@ -228,7 +211,7 @@ void bsPutBit ( BitStream* bs, Int32 bit )
|
||||||
/*--
|
/*--
|
||||||
Returns 0 or 1, or 2 to indicate EOF.
|
Returns 0 or 1, or 2 to indicate EOF.
|
||||||
--*/
|
--*/
|
||||||
Int32 bsGetBit ( BitStream* bs )
|
static Int32 bsGetBit ( BitStream* bs )
|
||||||
{
|
{
|
||||||
if (bs->buffLive > 0) {
|
if (bs->buffLive > 0) {
|
||||||
bs->buffLive --;
|
bs->buffLive --;
|
||||||
|
@ -247,7 +230,7 @@ Int32 bsGetBit ( BitStream* bs )
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
void bsClose ( BitStream* bs )
|
static void bsClose ( BitStream* bs )
|
||||||
{
|
{
|
||||||
Int32 retVal;
|
Int32 retVal;
|
||||||
|
|
||||||
|
@ -271,7 +254,7 @@ void bsClose ( BitStream* bs )
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
void bsPutUChar ( BitStream* bs, UChar c )
|
static void bsPutUChar ( BitStream* bs, UChar c )
|
||||||
{
|
{
|
||||||
Int32 i;
|
Int32 i;
|
||||||
for (i = 7; i >= 0; i--)
|
for (i = 7; i >= 0; i--)
|
||||||
|
@ -280,7 +263,7 @@ void bsPutUChar ( BitStream* bs, UChar c )
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
void bsPutUInt32 ( BitStream* bs, UInt32 c )
|
static void bsPutUInt32 ( BitStream* bs, UInt32 c )
|
||||||
{
|
{
|
||||||
Int32 i;
|
Int32 i;
|
||||||
|
|
||||||
|
@ -290,7 +273,7 @@ void bsPutUInt32 ( BitStream* bs, UInt32 c )
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------*/
|
/*---------------------------------------------*/
|
||||||
Bool endsInBz2 ( Char* name )
|
static Bool endsInBz2 ( Char* name )
|
||||||
{
|
{
|
||||||
Int32 n = strlen ( name );
|
Int32 n = strlen ( name );
|
||||||
if (n <= 4) return False;
|
if (n <= 4) return False;
|
||||||
|
@ -345,7 +328,7 @@ Int32 main ( Int32 argc, Char** argv )
|
||||||
inFileName[0] = outFileName[0] = 0;
|
inFileName[0] = outFileName[0] = 0;
|
||||||
|
|
||||||
fprintf ( stderr,
|
fprintf ( stderr,
|
||||||
"bzip2recover 1.0.3: extracts blocks from damaged .bz2 files.\n" );
|
"bzip2recover 1.0.5: extracts blocks from damaged .bz2 files.\n" );
|
||||||
|
|
||||||
if (argc != 2) {
|
if (argc != 2) {
|
||||||
fprintf ( stderr, "%s: usage is `%s damaged_file_name'.\n",
|
fprintf ( stderr, "%s: usage is `%s damaged_file_name'.\n",
|
98
commands/bzip2/bzlib.c → dist/bzip2/bzlib.c
vendored
98
commands/bzip2/bzlib.c → dist/bzip2/bzlib.c
vendored
|
@ -1,77 +1,34 @@
|
||||||
|
/* $NetBSD: bzlib.c,v 1.4 2008/03/18 14:47:07 christos Exp $ */
|
||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
/*--- Library top-level functions. ---*/
|
/*--- Library top-level functions. ---*/
|
||||||
/*--- bzlib.c ---*/
|
/*--- bzlib.c ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2005 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
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, Cambridge, UK.
|
|
||||||
jseward@bzip.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
/*--
|
|
||||||
CHANGES
|
|
||||||
~~~~~~~
|
|
||||||
0.9.0 -- original version.
|
|
||||||
|
|
||||||
|
/* CHANGES
|
||||||
|
0.9.0 -- original version.
|
||||||
0.9.0a/b -- no changes in this file.
|
0.9.0a/b -- no changes in this file.
|
||||||
|
0.9.0c -- made zero-length BZ_FLUSH work correctly in bzCompress().
|
||||||
0.9.0c
|
fixed bzWrite/bzRead to ignore zero-length requests.
|
||||||
* made zero-length BZ_FLUSH work correctly in bzCompress().
|
fixed bzread to correctly handle read requests after EOF.
|
||||||
* fixed bzWrite/bzRead to ignore zero-length requests.
|
wrong parameter order in call to bzDecompressInit in
|
||||||
* fixed bzread to correctly handle read requests after EOF.
|
bzBuffToBuffDecompress. Fixed.
|
||||||
* wrong parameter order in call to bzDecompressInit in
|
*/
|
||||||
bzBuffToBuffDecompress. Fixed.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
#include "bzlib_private.h"
|
#include "bzlib_private.h"
|
||||||
|
|
||||||
|
@ -93,7 +50,7 @@ void BZ2_bz__AssertH__fail ( int errcode )
|
||||||
"component, you should also report this bug to the author(s)\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"
|
"of that program. Please make an effort to report this bug;\n"
|
||||||
"timely and accurate bug reports eventually lead to higher\n"
|
"timely and accurate bug reports eventually lead to higher\n"
|
||||||
"quality software. Thanks. Julian Seward, 15 February 2005.\n\n",
|
"quality software. Thanks. Julian Seward, 10 December 2007.\n\n",
|
||||||
errcode,
|
errcode,
|
||||||
BZ2_bzlibVersion()
|
BZ2_bzlibVersion()
|
||||||
);
|
);
|
||||||
|
@ -643,6 +600,7 @@ Bool unRLE_obuf_to_output_FAST ( DState* s )
|
||||||
UInt32 c_tPos = s->tPos;
|
UInt32 c_tPos = s->tPos;
|
||||||
char* cs_next_out = s->strm->next_out;
|
char* cs_next_out = s->strm->next_out;
|
||||||
unsigned int cs_avail_out = s->strm->avail_out;
|
unsigned int cs_avail_out = s->strm->avail_out;
|
||||||
|
Int32 ro_blockSize100k = s->blockSize100k;
|
||||||
/* end restore */
|
/* end restore */
|
||||||
|
|
||||||
UInt32 avail_out_INIT = cs_avail_out;
|
UInt32 avail_out_INIT = cs_avail_out;
|
||||||
|
@ -1394,8 +1352,7 @@ int BZ_API(BZ2_bzBuffToBuffDecompress)
|
||||||
|
|
||||||
/*---------------------------------------------------*/
|
/*---------------------------------------------------*/
|
||||||
/*--
|
/*--
|
||||||
Code contributed by Yoshioka Tsuneo
|
Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
|
||||||
(QWF00133@niftyserve.or.jp/tsuneo-y@is.aist-nara.ac.jp),
|
|
||||||
to support better zlib compatibility.
|
to support better zlib compatibility.
|
||||||
This code is not _officially_ part of libbzip2 (yet);
|
This code is not _officially_ part of libbzip2 (yet);
|
||||||
I haven't tested it, documented it, or considered the
|
I haven't tested it, documented it, or considered the
|
||||||
|
@ -1406,7 +1363,7 @@ int BZ_API(BZ2_bzBuffToBuffDecompress)
|
||||||
|
|
||||||
/*---------------------------------------------------*/
|
/*---------------------------------------------------*/
|
||||||
/*--
|
/*--
|
||||||
return version like "0.9.0c".
|
return version like "0.9.5d, 4-Sept-1999".
|
||||||
--*/
|
--*/
|
||||||
const char * BZ_API(BZ2_bzlibVersion)(void)
|
const char * BZ_API(BZ2_bzlibVersion)(void)
|
||||||
{
|
{
|
||||||
|
@ -1453,7 +1410,7 @@ BZFILE * bzopen_or_bzdopen
|
||||||
case 's':
|
case 's':
|
||||||
smallMode = 1; break;
|
smallMode = 1; break;
|
||||||
default:
|
default:
|
||||||
if (isdigit((int)(*mode))) {
|
if (isdigit((unsigned char)(*mode))) {
|
||||||
blockSize100k = *mode-BZ_HDR_0;
|
blockSize100k = *mode-BZ_HDR_0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1559,9 +1516,10 @@ int BZ_API(BZ2_bzflush) (BZFILE *b)
|
||||||
void BZ_API(BZ2_bzclose) (BZFILE* b)
|
void BZ_API(BZ2_bzclose) (BZFILE* b)
|
||||||
{
|
{
|
||||||
int bzerr;
|
int bzerr;
|
||||||
FILE *fp = ((bzFile *)b)->handle;
|
FILE *fp;
|
||||||
|
|
||||||
if (b==NULL) {return;}
|
if (b==NULL) {return;}
|
||||||
|
fp = ((bzFile *)b)->handle;
|
||||||
if(((bzFile*)b)->writing){
|
if(((bzFile*)b)->writing){
|
||||||
BZ2_bzWriteClose(&bzerr,b,0,NULL,NULL);
|
BZ2_bzWriteClose(&bzerr,b,0,NULL,NULL);
|
||||||
if(bzerr != BZ_OK){
|
if(bzerr != BZ_OK){
|
||||||
|
@ -1580,7 +1538,7 @@ void BZ_API(BZ2_bzclose) (BZFILE* b)
|
||||||
/*--
|
/*--
|
||||||
return last error code
|
return last error code
|
||||||
--*/
|
--*/
|
||||||
static char *bzerrorstrings[] = {
|
static const char *bzerrorstrings[] = {
|
||||||
"OK"
|
"OK"
|
||||||
,"SEQUENCE_ERROR"
|
,"SEQUENCE_ERROR"
|
||||||
,"PARAM_ERROR"
|
,"PARAM_ERROR"
|
63
commands/bzip2/bzlib.h → dist/bzip2/bzlib.h
vendored
63
commands/bzip2/bzlib.h → dist/bzip2/bzlib.h
vendored
|
@ -4,59 +4,19 @@
|
||||||
/*--- bzlib.h ---*/
|
/*--- bzlib.h ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2005 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
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, Cambridge, UK.
|
|
||||||
jseward@bzip.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _BZLIB_H
|
#ifndef _BZLIB_H
|
||||||
|
@ -262,8 +222,7 @@ BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) (
|
||||||
|
|
||||||
|
|
||||||
/*--
|
/*--
|
||||||
Code contributed by Yoshioka Tsuneo
|
Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
|
||||||
(QWF00133@niftyserve.or.jp/tsuneo-y@is.aist-nara.ac.jp),
|
|
||||||
to support better zlib compatibility.
|
to support better zlib compatibility.
|
||||||
This code is not _officially_ part of libbzip2 (yet);
|
This code is not _officially_ part of libbzip2 (yet);
|
||||||
I haven't tested it, documented it, or considered the
|
I haven't tested it, documented it, or considered the
|
|
@ -4,59 +4,19 @@
|
||||||
/*--- bzlib_private.h ---*/
|
/*--- bzlib_private.h ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2005 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
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, Cambridge, UK.
|
|
||||||
jseward@bzip.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _BZLIB_PRIVATE_H
|
#ifndef _BZLIB_PRIVATE_H
|
||||||
|
@ -76,7 +36,7 @@
|
||||||
|
|
||||||
/*-- General stuff. --*/
|
/*-- General stuff. --*/
|
||||||
|
|
||||||
#define BZ_VERSION "1.0.3, 15-Feb-2005"
|
#define BZ_VERSION "1.0.5, 10-Dec-2007"
|
||||||
|
|
||||||
typedef char Char;
|
typedef char Char;
|
||||||
typedef unsigned char Bool;
|
typedef unsigned char Bool;
|
||||||
|
@ -94,9 +54,11 @@ typedef unsigned short UInt16;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef BZ_NO_STDIO
|
#ifndef BZ_NO_STDIO
|
||||||
|
|
||||||
extern void BZ2_bz__AssertH__fail ( int errcode );
|
extern void BZ2_bz__AssertH__fail ( int errcode );
|
||||||
#define AssertH(cond,errcode) \
|
#define AssertH(cond,errcode) \
|
||||||
{ if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); }
|
{ if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); }
|
||||||
|
|
||||||
#if BZ_DEBUG
|
#if BZ_DEBUG
|
||||||
#define AssertD(cond,msg) \
|
#define AssertD(cond,msg) \
|
||||||
{ if (!(cond)) { \
|
{ if (!(cond)) { \
|
||||||
|
@ -107,6 +69,7 @@ extern void BZ2_bz__AssertH__fail ( int errcode );
|
||||||
#else
|
#else
|
||||||
#define AssertD(cond,msg) /* */
|
#define AssertD(cond,msg) /* */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define VPrintf0(zf) \
|
#define VPrintf0(zf) \
|
||||||
fprintf(stderr,zf)
|
fprintf(stderr,zf)
|
||||||
#define VPrintf1(zf,za1) \
|
#define VPrintf1(zf,za1) \
|
||||||
|
@ -119,17 +82,20 @@ extern void BZ2_bz__AssertH__fail ( int errcode );
|
||||||
fprintf(stderr,zf,za1,za2,za3,za4)
|
fprintf(stderr,zf,za1,za2,za3,za4)
|
||||||
#define VPrintf5(zf,za1,za2,za3,za4,za5) \
|
#define VPrintf5(zf,za1,za2,za3,za4,za5) \
|
||||||
fprintf(stderr,zf,za1,za2,za3,za4,za5)
|
fprintf(stderr,zf,za1,za2,za3,za4,za5)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
extern void bz_internal_error ( int errcode );
|
extern void bz_internal_error ( int errcode );
|
||||||
#define AssertH(cond,errcode) \
|
#define AssertH(cond,errcode) \
|
||||||
{ if (!(cond)) bz_internal_error ( errcode ); }
|
{ if (!(cond)) bz_internal_error ( errcode ); }
|
||||||
#define AssertD(cond,msg) /* */
|
#define AssertD(cond,msg) do { } while (0)
|
||||||
#define VPrintf0(zf) /* */
|
#define VPrintf0(zf) do { } while (0)
|
||||||
#define VPrintf1(zf,za1) /* */
|
#define VPrintf1(zf,za1) do { } while (0)
|
||||||
#define VPrintf2(zf,za1,za2) /* */
|
#define VPrintf2(zf,za1,za2) do { } while (0)
|
||||||
#define VPrintf3(zf,za1,za2,za3) /* */
|
#define VPrintf3(zf,za1,za2,za3) do { } while (0)
|
||||||
#define VPrintf4(zf,za1,za2,za3,za4) /* */
|
#define VPrintf4(zf,za1,za2,za3,za4) do { } while (0)
|
||||||
#define VPrintf5(zf,za1,za2,za3,za4,za5) /* */
|
#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -476,11 +442,15 @@ typedef
|
||||||
/*-- Macros for decompression. --*/
|
/*-- Macros for decompression. --*/
|
||||||
|
|
||||||
#define BZ_GET_FAST(cccc) \
|
#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]; \
|
s->tPos = s->tt[s->tPos]; \
|
||||||
cccc = (UChar)(s->tPos & 0xff); \
|
cccc = (UChar)(s->tPos & 0xff); \
|
||||||
s->tPos >>= 8;
|
s->tPos >>= 8;
|
||||||
|
|
||||||
#define BZ_GET_FAST_C(cccc) \
|
#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]; \
|
c_tPos = c_tt[c_tPos]; \
|
||||||
cccc = (UChar)(c_tPos & 0xff); \
|
cccc = (UChar)(c_tPos & 0xff); \
|
||||||
c_tPos >>= 8;
|
c_tPos >>= 8;
|
||||||
|
@ -503,8 +473,10 @@ typedef
|
||||||
(((UInt32)s->ll16[i]) | (GET_LL4(i) << 16))
|
(((UInt32)s->ll16[i]) | (GET_LL4(i) << 16))
|
||||||
|
|
||||||
#define BZ_GET_SMALL(cccc) \
|
#define BZ_GET_SMALL(cccc) \
|
||||||
cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \
|
/* c_tPos is unsigned, hence test < 0 is pointless. */ \
|
||||||
s->tPos = GET_LL(s->tPos);
|
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. --*/
|
/*-- externs for decompression. --*/
|
0
commands/bzip2/bzmore → dist/bzip2/bzmore
vendored
0
commands/bzip2/bzmore → dist/bzip2/bzmore
vendored
|
@ -4,71 +4,27 @@
|
||||||
/*--- compress.c ---*/
|
/*--- compress.c ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2005 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
|
|
||||||
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
|
/* CHANGES
|
||||||
not be misrepresented as being the original software.
|
0.9.0 -- original version.
|
||||||
|
0.9.0a/b -- no changes in this file.
|
||||||
4. The name of the author may not be used to endorse or promote
|
0.9.0c -- changed setting of nGroups in sendMTFValues()
|
||||||
products derived from this software without specific prior written
|
so as to do a bit better on small files
|
||||||
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, Cambridge, UK.
|
|
||||||
jseward@bzip.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
/*--
|
|
||||||
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"
|
#include "bzlib_private.h"
|
||||||
|
|
|
@ -4,59 +4,19 @@
|
||||||
/*--- crctable.c ---*/
|
/*--- crctable.c ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2005 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
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, Cambridge, UK.
|
|
||||||
jseward@bzip.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bzlib_private.h"
|
#include "bzlib_private.h"
|
|
@ -4,59 +4,19 @@
|
||||||
/*--- decompress.c ---*/
|
/*--- decompress.c ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2005 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
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, Cambridge, UK.
|
|
||||||
jseward@bzip.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bzlib_private.h"
|
#include "bzlib_private.h"
|
||||||
|
@ -421,6 +381,13 @@ Int32 BZ2_decompress ( DState* s )
|
||||||
es = -1;
|
es = -1;
|
||||||
N = 1;
|
N = 1;
|
||||||
do {
|
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_RUNA) es = es + (0+1) * N; else
|
||||||
if (nextSym == BZ_RUNB) es = es + (1+1) * N;
|
if (nextSym == BZ_RUNB) es = es + (1+1) * N;
|
||||||
N = N * 2;
|
N = N * 2;
|
|
@ -1,9 +1,8 @@
|
||||||
/*
|
/*
|
||||||
minibz2
|
minibz2
|
||||||
libbz2.dll test program.
|
libbz2.dll test program.
|
||||||
by Yoshioka Tsuneo(QWF00133@nifty.ne.jp/tsuneo-y@is.aist-nara.ac.jp)
|
by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
|
||||||
This file is Public Domain.
|
This file is Public Domain. Welcome any email to me.
|
||||||
welcome any email to me.
|
|
||||||
|
|
||||||
usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]
|
usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]
|
||||||
*/
|
*/
|
|
@ -1,9 +1,9 @@
|
||||||
<!-- misc. strings -->
|
<!-- misc. strings -->
|
||||||
<!ENTITY bz-url "http://www.bzip.org">
|
<!ENTITY bz-url "http://www.bzip.org">
|
||||||
<!ENTITY bz-email "jseward@bzip.org">
|
<!ENTITY bz-email "jseward@bzip.org">
|
||||||
<!ENTITY bz-lifespan "1996-2005">
|
<!ENTITY bz-lifespan "1996-2007">
|
||||||
|
|
||||||
<!ENTITY bz-version "1.0.3">
|
<!ENTITY bz-version "1.0.5">
|
||||||
<!ENTITY bz-date "15 February 2005">
|
<!ENTITY bz-date "10 December 2007">
|
||||||
|
|
||||||
<!ENTITY manual-title "bzip2 Manual">
|
<!ENTITY manual-title "bzip2 Manual">
|
15
commands/bzip2/format.pl → dist/bzip2/format.pl
vendored
15
commands/bzip2/format.pl → dist/bzip2/format.pl
vendored
|
@ -1,4 +1,19 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
#
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# This file is part of bzip2/libbzip2, a program and library for
|
||||||
|
# lossless, block-sorting data compression.
|
||||||
|
#
|
||||||
|
# bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
# Copyright (C) 1996-2007 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.
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
#
|
||||||
use strict;
|
use strict;
|
||||||
|
|
||||||
# get command line values:
|
# get command line values:
|
60
commands/bzip2/huffman.c → dist/bzip2/huffman.c
vendored
60
commands/bzip2/huffman.c → dist/bzip2/huffman.c
vendored
|
@ -4,59 +4,19 @@
|
||||||
/*--- huffman.c ---*/
|
/*--- huffman.c ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2005 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
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, Cambridge, UK.
|
|
||||||
jseward@bzip.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bzlib_private.h"
|
#include "bzlib_private.h"
|
2540
dist/bzip2/manual.html
vendored
Normal file
2540
dist/bzip2/manual.html
vendored
Normal file
File diff suppressed because it is too large
Load diff
2964
dist/bzip2/manual.xml
vendored
Normal file
2964
dist/bzip2/manual.xml
vendored
Normal file
File diff suppressed because it is too large
Load diff
31
dist/bzip2/mk251.c
vendored
Normal file
31
dist/bzip2/mk251.c
vendored
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
|
||||||
|
/* Spew out a long sequence of the byte 251. When fed to bzip2
|
||||||
|
versions 1.0.0 or 1.0.1, causes it to die with internal error
|
||||||
|
1007 in blocksort.c. This assertion misses an extremely rare
|
||||||
|
case, which is fixed in this version (1.0.2) and above.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------
|
||||||
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 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>
|
||||||
|
|
||||||
|
int main ()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < 48500000 ; i++)
|
||||||
|
putchar(251);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -4,59 +4,19 @@
|
||||||
/*--- randtable.c ---*/
|
/*--- randtable.c ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2005 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
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, Cambridge, UK.
|
|
||||||
jseward@bzip.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bzlib_private.h"
|
#include "bzlib_private.h"
|
BIN
dist/bzip2/sample1.rb2
vendored
Normal file
BIN
dist/bzip2/sample1.rb2
vendored
Normal file
Binary file not shown.
BIN
dist/bzip2/sample1.tst
vendored
Normal file
BIN
dist/bzip2/sample1.tst
vendored
Normal file
Binary file not shown.
BIN
dist/bzip2/sample2.rb2
vendored
Normal file
BIN
dist/bzip2/sample2.rb2
vendored
Normal file
Binary file not shown.
BIN
dist/bzip2/sample2.tst
vendored
Normal file
BIN
dist/bzip2/sample2.tst
vendored
Normal file
Binary file not shown.
BIN
dist/bzip2/sample3.rb2
vendored
Normal file
BIN
dist/bzip2/sample3.rb2
vendored
Normal file
Binary file not shown.
30007
dist/bzip2/sample3.tst
vendored
Normal file
30007
dist/bzip2/sample3.tst
vendored
Normal file
File diff suppressed because it is too large
Load diff
15
commands/bzip2/spewG.c → dist/bzip2/spewG.c
vendored
15
commands/bzip2/spewG.c → dist/bzip2/spewG.c
vendored
|
@ -9,6 +9,21 @@
|
||||||
(but is otherwise harmless).
|
(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.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 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
|
#define _FILE_OFFSET_BITS 64
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
|
@ -8,11 +8,26 @@
|
||||||
This should not cause any invalid memory accesses. If it does,
|
This should not cause any invalid memory accesses. If it does,
|
||||||
I want to know about it!
|
I want to know about it!
|
||||||
|
|
||||||
p.s. As you can see from the above description, the process is
|
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
|
incredibly slow. A file of size eg 5KB will cause it to run for
|
||||||
many hours.
|
many hours.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------
|
||||||
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 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 <stdio.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "bzlib.h"
|
#include "bzlib.h"
|
9
dist/bzip2/words0
vendored
Normal file
9
dist/bzip2/words0
vendored
Normal file
|
@ -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.
|
||||||
|
|
0
commands/bzip2/words1 → dist/bzip2/words1
vendored
0
commands/bzip2/words1 → dist/bzip2/words1
vendored
2
commands/bzip2/words2 → dist/bzip2/words2
vendored
2
commands/bzip2/words2 → dist/bzip2/words2
vendored
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
Checking test results. If any of the four "cmp"s which follow
|
Checking test results. If any of the four "cmp"s which follow
|
||||||
report any differences, something is wrong. If you can't easily
|
report any differences, something is wrong. If you can't easily
|
||||||
figure out what, please let me know (jseward@acm.org).
|
figure out what, please let me know (jseward@bzip.org).
|
||||||
|
|
13
commands/bzip2/words3 → dist/bzip2/words3
vendored
13
commands/bzip2/words3 → dist/bzip2/words3
vendored
|
@ -1,22 +1,29 @@
|
||||||
|
|
||||||
If you got this far and the "cmp"s didn't complain, it looks
|
If you got this far and the 'cmp's didn't complain, it looks
|
||||||
like you're in business.
|
like you're in business.
|
||||||
|
|
||||||
To install in /usr/bin, /usr/lib, /usr/man and /usr/include, type
|
To install in /usr/local/bin, /usr/local/lib, /usr/local/man and
|
||||||
|
/usr/local/include, type
|
||||||
|
|
||||||
make install
|
make install
|
||||||
|
|
||||||
To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type
|
To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type
|
||||||
|
|
||||||
make install PREFIX=/xxx/yyy
|
make install PREFIX=/xxx/yyy
|
||||||
|
|
||||||
If you are (justifiably) paranoid and want to see what 'make install'
|
If you are (justifiably) paranoid and want to see what 'make install'
|
||||||
is going to do, you can first do
|
is going to do, you can first do
|
||||||
|
|
||||||
make -n install or
|
make -n install or
|
||||||
make -n install PREFIX=/xxx/yyy respectively.
|
make -n install PREFIX=/xxx/yyy respectively.
|
||||||
|
|
||||||
The -n instructs make to show the commands it would execute, but
|
The -n instructs make to show the commands it would execute, but
|
||||||
not actually execute them.
|
not actually execute them.
|
||||||
|
|
||||||
Instructions for use are in the preformatted manual page, in the file
|
Instructions for use are in the preformatted manual page, in the file
|
||||||
bzip2.txt. For more detailed documentation, read the full manual.
|
bzip2.txt. For more detailed documentation, read the full manual.
|
||||||
It is available in Postscript form (manual.ps), PDF form (manual.pdf),
|
It is available in Postscript form (manual.ps), PDF form (manual.pdf),
|
||||||
and HTML form (manual_toc.html).
|
and HTML form (manual.html).
|
||||||
|
|
||||||
You can also do "bzip2 --help" to see some helpful information.
|
You can also do "bzip2 --help" to see some helpful information.
|
||||||
"bzip2 -L" displays the software license.
|
"bzip2 -L" displays the software license.
|
|
@ -1,5 +1,20 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# see the README in this directory for usage etc.
|
# see the README file for usage etc.
|
||||||
|
#
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# This file is part of bzip2/libbzip2, a program and library for
|
||||||
|
# lossless, block-sorting data compression.
|
||||||
|
#
|
||||||
|
# bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
# Copyright (C) 1996-2007 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.
|
||||||
|
# ----------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo '';
|
echo '';
|
||||||
|
@ -45,7 +60,7 @@ export XML_CATALOG_FILES=/etc/xml/catalog
|
||||||
|
|
||||||
# post-processing tidy up
|
# post-processing tidy up
|
||||||
cleanup() {
|
cleanup() {
|
||||||
echo "Cleaning up: # $@"
|
echo "Cleaning up: $@"
|
||||||
while [ $# != 0 ]
|
while [ $# != 0 ]
|
||||||
do
|
do
|
||||||
arg=$1; shift;
|
arg=$1; shift;
|
|
@ -74,6 +74,8 @@
|
||||||
755 root operator /usr/run
|
755 root operator /usr/run
|
||||||
755 root operator /usr/share
|
755 root operator /usr/share
|
||||||
755 root operator /usr/share/doc
|
755 root operator /usr/share/doc
|
||||||
|
755 root operator /usr/share/doc/html
|
||||||
|
755 root operator /usr/share/doc/html/bzip2
|
||||||
755 root operator /usr/share/doc/psd
|
755 root operator /usr/share/doc/psd
|
||||||
755 root operator /usr/share/doc/psd/19.curses
|
755 root operator /usr/share/doc/psd/19.curses
|
||||||
755 root operator /usr/share/mk
|
755 root operator /usr/share/mk
|
||||||
|
|
|
@ -17,14 +17,14 @@ LIBMINLIB_DIR?=
|
||||||
LIBASYN_DIR?=
|
LIBASYN_DIR?=
|
||||||
|
|
||||||
SUBDIR= csu ${LIBCOMPAT_DIR} ${LIBC_DIR} libdriver libnetdriver \
|
SUBDIR= csu ${LIBCOMPAT_DIR} ${LIBC_DIR} libdriver libnetdriver \
|
||||||
libedit ${LIBM_DIR} libsys libtimers ${LIBUTIL_DIR} libbz2 libl libhgfs \
|
libedit ${LIBM_DIR} libsys libtimers ${LIBUTIL_DIR} libl libhgfs \
|
||||||
libz libfetch libarchive libvtreefs libaudiodriver libmthread \
|
libz libfetch libarchive libvtreefs libaudiodriver libmthread \
|
||||||
libexec libdevman libusb ${LIBMINLIB_DIR} ${LIBASYN_DIR} \
|
libexec libdevman libusb ${LIBMINLIB_DIR} ${LIBASYN_DIR} \
|
||||||
libddekit libminixfs libbdev
|
libddekit libminixfs libbdev
|
||||||
|
|
||||||
.if defined(NBSD_LIBC) && (${NBSD_LIBC} != "no")
|
.if defined(NBSD_LIBC) && (${NBSD_LIBC} != "no")
|
||||||
SUBDIR+= libelf libminc libcrypt libterminfo libcurses libvassert libutil \
|
SUBDIR+= libelf libminc libcrypt libterminfo libcurses libvassert libutil \
|
||||||
libpuffs librefuse
|
libpuffs librefuse libbz2
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
.if ${COMPILER_TYPE} == "ack"
|
.if ${COMPILER_TYPE} == "ack"
|
||||||
|
|
|
@ -1,18 +1,40 @@
|
||||||
|
# $NetBSD: Makefile,v 1.14 2008/08/29 00:02:22 gmcgarry Exp $
|
||||||
|
|
||||||
|
.if defined(__MINIX)
|
||||||
|
# ssp-buffer-size=0, __SSP_FORTIFY_LEVEL=0
|
||||||
|
USE_FORT=no
|
||||||
|
.else
|
||||||
|
USE_FORT?= yes # data driven bugs?
|
||||||
|
.endif
|
||||||
|
|
||||||
|
NOMAN= # defined
|
||||||
|
|
||||||
.include <bsd.own.mk>
|
.include <bsd.own.mk>
|
||||||
|
|
||||||
LIB= bz2
|
LIB= bz2
|
||||||
BZ2DIR= ${MINIXSRCDIR}/commands/bzip2
|
DIST= ${NETBSDSRCDIR}/dist/bzip2
|
||||||
.PATH: ${BZ2DIR}
|
.PATH: ${DIST}
|
||||||
|
|
||||||
SRCS= bzlib.c blocksort.c compress.c crctable.c decompress.c \
|
SRCS= blocksort.c huffman.c crctable.c randtable.c compress.c \
|
||||||
huffman.c randtable.c
|
decompress.c bzlib.c
|
||||||
CPPFLAGS+= -I ${BZ2DIR}
|
|
||||||
INCS= bzlib.h
|
INCS= bzlib.h
|
||||||
|
INCSDIR= /usr/include
|
||||||
|
|
||||||
.if (${NBSD_LIBC} != "no")
|
# XXX huffman.c gets mis-compiled with 2.95.3
|
||||||
INCSDIR= /usr/include
|
.if ${MACHINE_ARCH} == "vax"
|
||||||
.else
|
COPTS+= -O0
|
||||||
INCSDIR= /usr/include.ack
|
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
|
# XXX blocksort.c gets mis-compiled with 4.1
|
||||||
|
.if (${MACHINE_ARCH} == "sh3el" || ${MACHINE_ARCH} == "sh3eb") && \
|
||||||
|
(defined(HAVE_GCC) && ${HAVE_GCC} == 4)
|
||||||
|
COPTS.blocksort.c+= -fno-loop-optimize
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if ${MKSHARE} != "no"
|
||||||
|
FILESDIR= ${HTMLDOCDIR}/bzip2
|
||||||
|
FILES= manual.html
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.include <bsd.info.mk>
|
||||||
.include <bsd.lib.mk>
|
.include <bsd.lib.mk>
|
||||||
|
|
5
lib/libbz2/shlib_version
Normal file
5
lib/libbz2/shlib_version
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# $NetBSD: shlib_version,v 1.4 2008/03/19 17:10:52 bjs Exp $
|
||||||
|
# Remember to update distrib/sets/lists/base/shl.* when changing
|
||||||
|
#
|
||||||
|
major=1
|
||||||
|
minor=1
|
|
@ -4,7 +4,7 @@ NOOBJ= # defined
|
||||||
|
|
||||||
.if ${MKSHARE} != "no"
|
.if ${MKSHARE} != "no"
|
||||||
FILES= bsd.dep.mk bsd.files.mk \
|
FILES= bsd.dep.mk bsd.files.mk \
|
||||||
bsd.inc.mk \
|
bsd.inc.mk bsd.info.mk \
|
||||||
bsd.init.mk bsd.kinc.mk bsd.klinks.mk bsd.lib.mk \
|
bsd.init.mk bsd.kinc.mk bsd.klinks.mk bsd.lib.mk \
|
||||||
bsd.links.mk bsd.man.mk bsd.obj.mk bsd.own.mk \
|
bsd.links.mk bsd.man.mk bsd.obj.mk bsd.own.mk \
|
||||||
bsd.prog.mk bsd.subdir.mk bsd.sys.mk bsd.doc.mk \
|
bsd.prog.mk bsd.subdir.mk bsd.sys.mk bsd.doc.mk \
|
||||||
|
|
92
share/mk/bsd.info.mk
Normal file
92
share/mk/bsd.info.mk
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
# $NetBSD: bsd.info.mk,v 1.39 2009/02/28 19:18:52 joerg Exp $
|
||||||
|
|
||||||
|
.include <bsd.init.mk>
|
||||||
|
|
||||||
|
##### Basic targets
|
||||||
|
cleandir: cleaninfo
|
||||||
|
realinstall: infoinstall
|
||||||
|
|
||||||
|
##### Default values
|
||||||
|
INFOFLAGS?=
|
||||||
|
|
||||||
|
INFOFILES?=
|
||||||
|
|
||||||
|
##### Build rules
|
||||||
|
.if ${MKINFO} != "no"
|
||||||
|
|
||||||
|
INFOFILES= ${TEXINFO:C/\.te?xi(nfo)?$/.info/}
|
||||||
|
|
||||||
|
realall: ${INFOFILES}
|
||||||
|
.NOPATH: ${INFOFILES}
|
||||||
|
|
||||||
|
.SUFFIXES: .txi .texi .texinfo .info
|
||||||
|
|
||||||
|
.txi.info .texi.info .texinfo.info:
|
||||||
|
${_MKTARGET_CREATE}
|
||||||
|
${TOOL_MAKEINFO} ${INFOFLAGS} --no-split --no-version-header -o ${.TARGET} ${.IMPSRC}
|
||||||
|
|
||||||
|
.endif # ${MKINFO} != "no"
|
||||||
|
|
||||||
|
##### Install rules
|
||||||
|
infoinstall:: # ensure existence
|
||||||
|
.PHONY: infoinstall
|
||||||
|
|
||||||
|
.if ${MKINFO} != "no"
|
||||||
|
|
||||||
|
INFODIRFILE=${DESTDIR}${INFODIR}/dir
|
||||||
|
|
||||||
|
# serialize access to ${INFODIRFILE}; needed for parallel makes
|
||||||
|
__infoinstall: .USE
|
||||||
|
${_MKTARGET_INSTALL}
|
||||||
|
${INSTALL_FILE} \
|
||||||
|
-o ${INFOOWN_${.ALLSRC:T}:U${INFOOWN}} \
|
||||||
|
-g ${INFOGRP_${.ALLSRC:T}:U${INFOGRP}} \
|
||||||
|
-m ${INFOMODE_${.ALLSRC:T}:U${INFOMODE}} \
|
||||||
|
${.ALLSRC} ${.TARGET}
|
||||||
|
@[ -f ${INFODIRFILE} ] && \
|
||||||
|
while ! ln ${INFODIRFILE} ${INFODIRFILE}.lock 2> /dev/null; \
|
||||||
|
do sleep 1; done; \
|
||||||
|
${TOOL_INSTALL_INFO} -d ${INFODIRFILE} -r ${.TARGET} 2> /dev/null; \
|
||||||
|
${TOOL_INSTALL_INFO} -d ${INFODIRFILE} ${.TARGET}; \
|
||||||
|
rm -f ${INFODIRFILE}.lock
|
||||||
|
|
||||||
|
|
||||||
|
.for F in ${INFOFILES:O:u}
|
||||||
|
_FDIR:= ${INFODIR_${F}:U${INFODIR}} # dir overrides
|
||||||
|
_FNAME:= ${INFONAME_${F}:U${INFONAME:U${F:T}}} # name overrides
|
||||||
|
_F:= ${DESTDIR}${_FDIR}/${_FNAME} # installed path
|
||||||
|
|
||||||
|
.if ${MKUPDATE} == "no"
|
||||||
|
${_F}! ${F} __infoinstall # install rule
|
||||||
|
.if !defined(BUILD) && !make(all) && !make(${F})
|
||||||
|
${_F}! .MADE # no build at install
|
||||||
|
.endif
|
||||||
|
.else
|
||||||
|
${_F}: ${F} __infoinstall # install rule
|
||||||
|
.if !defined(BUILD) && !make(all) && !make(${F})
|
||||||
|
${_F}: .MADE # no build at install
|
||||||
|
.endif
|
||||||
|
.endif
|
||||||
|
|
||||||
|
infoinstall:: ${_F}
|
||||||
|
.PRECIOUS: ${_F} # keep if install fails
|
||||||
|
.endfor
|
||||||
|
|
||||||
|
.undef _FDIR
|
||||||
|
.undef _FNAME
|
||||||
|
.undef _F
|
||||||
|
.endif # ${MKINFO} != "no"
|
||||||
|
|
||||||
|
##### Clean rules
|
||||||
|
CLEANFILES+= ${INFOFILES}
|
||||||
|
|
||||||
|
cleaninfo: .PHONY
|
||||||
|
.if !empty(CLEANFILES)
|
||||||
|
rm -f ${CLEANFILES}
|
||||||
|
.endif
|
||||||
|
|
||||||
|
##### Pull in related .mk logic
|
||||||
|
.include <bsd.obj.mk>
|
||||||
|
.include <bsd.sys.mk>
|
||||||
|
|
||||||
|
${TARGETS}: # ensure existence
|
|
@ -6,6 +6,7 @@ lib/libterminfo src/lib/libterminfo
|
||||||
lib/libcurses src/lib/libcurses
|
lib/libcurses src/lib/libcurses
|
||||||
lib/libutil src/lib/libutil
|
lib/libutil src/lib/libutil
|
||||||
common/lib/libutil src/common/lib/libutil
|
common/lib/libutil src/common/lib/libutil
|
||||||
|
lib/libbz2 src/lib/libbz2
|
||||||
nbsd_include src/include
|
nbsd_include src/include
|
||||||
bin/mkdir src/bin/mkdir
|
bin/mkdir src/bin/mkdir
|
||||||
usr.bin/chpass src/usr.bin/chpass
|
usr.bin/chpass src/usr.bin/chpass
|
||||||
|
@ -24,4 +25,7 @@ usr.bin/mdocml src/external/bsd/mdocml
|
||||||
usr.sbin/pwd_mkdb src/usr.sbin/pwd_mkdb
|
usr.sbin/pwd_mkdb src/usr.sbin/pwd_mkdb
|
||||||
usr.sbin/user src/usr.sbin/user
|
usr.sbin/user src/usr.sbin/user
|
||||||
usr.sbin/vipw src/usr.sbin/vipw
|
usr.sbin/vipw src/usr.sbin/vipw
|
||||||
|
usr.bin/bzip2 src/usr.bin/bzip2
|
||||||
|
usr.bin/bzip2recover src/usr.bin/bzip2recover
|
||||||
libexec/makewhatis src/libexec/makewhatis
|
libexec/makewhatis src/libexec/makewhatis
|
||||||
|
dist/bzip2 dist/bzip2
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
# NetBSD imports
|
# NetBSD imports
|
||||||
SUBDIR= indent m4 stat tic sed mkdep uniq seq man mdocml \
|
SUBDIR= indent m4 stat tic sed mkdep uniq seq man mdocml \
|
||||||
apropos chpass newgrp passwd
|
apropos chpass newgrp passwd bzip2 bzip2recover
|
||||||
|
|
||||||
# Non-NetBSD imports
|
# Non-NetBSD imports
|
||||||
SUBDIR+= ministat
|
SUBDIR+= ministat
|
||||||
|
|
39
usr.bin/bzip2/Makefile
Normal file
39
usr.bin/bzip2/Makefile
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# $NetBSD: Makefile,v 1.10 2007/05/28 12:06:24 tls Exp $
|
||||||
|
|
||||||
|
.include <bsd.own.mk> # for MKDYNAMICROOT definition
|
||||||
|
|
||||||
|
.if defined(__MINIX)
|
||||||
|
MKDYNAMICROOT= no
|
||||||
|
SMALLPROG= yes
|
||||||
|
USE_FORT=no # __SSP_FORTIFY_LEVEL=0
|
||||||
|
.else
|
||||||
|
USE_FORT?= yes # data-driven bugs?
|
||||||
|
.endif
|
||||||
|
|
||||||
|
PROG= bzip2
|
||||||
|
LDDIR!= cd ${NETBSDSRCDIR}/lib/libbz2 && ${PRINTOBJDIR}
|
||||||
|
LDADD+= -L${LDDIR} -lbz2
|
||||||
|
DPADD+= ${LIBBZ2}
|
||||||
|
|
||||||
|
.if (${MKDYNAMICROOT} == "no")
|
||||||
|
LDSTATIC?= -static
|
||||||
|
.endif
|
||||||
|
.ifdef SMALLPROG
|
||||||
|
CPPFLAGS+= -DSMALL
|
||||||
|
.endif
|
||||||
|
|
||||||
|
DIST= ${NETBSDSRCDIR}/dist/bzip2
|
||||||
|
.PATH: ${DIST}
|
||||||
|
|
||||||
|
MLINKS+= bzip2.1 bunzip2.1\
|
||||||
|
bzip2.1 bzcat.1\
|
||||||
|
bzip2.1 bzip2recover.1
|
||||||
|
|
||||||
|
LINKS+= ${BINDIR}/bzip2 ${BINDIR}/bunzip2
|
||||||
|
LINKS+= ${BINDIR}/bzip2 ${BINDIR}/bzcat
|
||||||
|
|
||||||
|
test:
|
||||||
|
make -C dist/bzip2 test
|
||||||
|
install-extra:
|
||||||
|
make -C dist/bzip2 install
|
||||||
|
.include <bsd.prog.mk>
|
25
usr.bin/bzip2recover/Makefile
Normal file
25
usr.bin/bzip2recover/Makefile
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# $NetBSD: Makefile,v 1.8 2007/05/28 12:06:25 tls Exp $
|
||||||
|
|
||||||
|
.if defined(__MINIX)
|
||||||
|
USE_FORT=no # __SSP_FORTIFY_LEVEL=0
|
||||||
|
.else
|
||||||
|
USE_FORT?= yes # data-driven bugs?
|
||||||
|
.endif
|
||||||
|
NOMAN= # defined
|
||||||
|
|
||||||
|
.include <bsd.own.mk> # for MKDYNAMICROOT definition
|
||||||
|
|
||||||
|
.if defined(__MINIX)
|
||||||
|
MKDYNAMICROOT= no
|
||||||
|
.endif
|
||||||
|
|
||||||
|
PROG= bzip2recover
|
||||||
|
|
||||||
|
.if (${MKDYNAMICROOT} == "no")
|
||||||
|
LDSTATIC?= -static
|
||||||
|
.endif
|
||||||
|
|
||||||
|
DIST= ${NETBSDSRCDIR}/dist/bzip2
|
||||||
|
.PATH: ${DIST}
|
||||||
|
|
||||||
|
.include <bsd.prog.mk>
|
Loading…
Reference in a new issue