xref: /freebsd/contrib/bzip2/README (revision df9de0eba10ac3f17697c3626efff3f484b3333a)
1df9de0ebSDavid E. O'Brien
2df9de0ebSDavid E. O'BrienThis is the README for bzip2, a block-sorting file compressor, version
3df9de0ebSDavid E. O'Brien1.0.  This version is fully compatible with the previous public
4df9de0ebSDavid E. O'Brienreleases, bzip2-0.1pl2, bzip2-0.9.0 and bzip2-0.9.5.
5df9de0ebSDavid E. O'Brien
6df9de0ebSDavid E. O'Brienbzip2-1.0 is distributed under a BSD-style license.  For details,
7df9de0ebSDavid E. O'Briensee the file LICENSE.
8df9de0ebSDavid E. O'Brien
9df9de0ebSDavid E. O'BrienComplete documentation is available in Postscript form (manual.ps) or
10df9de0ebSDavid E. O'Brienhtml (manual_toc.html).  A plain-text version of the manual page is
11df9de0ebSDavid E. O'Brienavailable as bzip2.txt.  A statement about Y2K issues is now included
12df9de0ebSDavid E. O'Brienin the file Y2K_INFO.
13df9de0ebSDavid E. O'Brien
14df9de0ebSDavid E. O'Brien
15df9de0ebSDavid E. O'BrienHOW TO BUILD -- UNIX
16df9de0ebSDavid E. O'Brien
17df9de0ebSDavid E. O'BrienType `make'.  This builds the library libbz2.a and then the
18df9de0ebSDavid E. O'Brienprograms bzip2 and bzip2recover.  Six self-tests are run.
19df9de0ebSDavid E. O'BrienIf the self-tests complete ok, carry on to installation:
20df9de0ebSDavid E. O'Brien
21df9de0ebSDavid E. O'BrienTo install in /usr/bin, /usr/lib, /usr/man and /usr/include, type
22df9de0ebSDavid E. O'Brien   make install
23df9de0ebSDavid E. O'BrienTo install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type
24df9de0ebSDavid E. O'Brien   make install PREFIX=/xxx/yyy
25df9de0ebSDavid E. O'BrienIf you are (justifiably) paranoid and want to see what 'make install'
26df9de0ebSDavid E. O'Brienis going to do, you can first do
27df9de0ebSDavid E. O'Brien   make -n install                      or
28df9de0ebSDavid E. O'Brien   make -n install PREFIX=/xxx/yyy      respectively.
29df9de0ebSDavid E. O'BrienThe -n instructs make to show the commands it would execute, but
30df9de0ebSDavid E. O'Briennot actually execute them.
31df9de0ebSDavid E. O'Brien
32df9de0ebSDavid E. O'Brien
33df9de0ebSDavid E. O'BrienHOW TO BUILD -- UNIX, shared library libbz2.so.
34df9de0ebSDavid E. O'Brien
35df9de0ebSDavid E. O'BrienDo 'make -f Makefile-libbz2_so'.  This Makefile seems to work for
36df9de0ebSDavid E. O'BrienLinux-ELF (RedHat 5.2 on an x86 box), with gcc.  I make no claims
37df9de0ebSDavid E. O'Brienthat it works for any other platform, though I suspect it probably
38df9de0ebSDavid E. O'Brienwill work for most platforms employing both ELF and gcc.
39df9de0ebSDavid E. O'Brien
40df9de0ebSDavid E. O'Brienbzip2-shared, a client of the shared library, is also build, but
41df9de0ebSDavid E. O'Briennot self-tested.  So I suggest you also build using the normal
42df9de0ebSDavid E. O'BrienMakefile, since that conducts a self-test.
43df9de0ebSDavid E. O'Brien
44df9de0ebSDavid E. O'BrienImportant note for people upgrading .so's from 0.9.0/0.9.5 to
45df9de0ebSDavid E. O'Brienversion 1.0.  All the functions in the library have been renamed,
46df9de0ebSDavid E. O'Brienfrom (eg) bzCompress to BZ2_bzCompress, to avoid namespace pollution.
47df9de0ebSDavid E. O'BrienUnfortunately this means that the libbz2.so created by
48df9de0ebSDavid E. O'BrienMakefile-libbz2_so will not work with any program which used an
49df9de0ebSDavid E. O'Brienolder version of the library.  Sorry.  I do encourage library
50df9de0ebSDavid E. O'Brienclients to make the effort to upgrade to use version 1.0, since
51df9de0ebSDavid E. O'Brienit is both faster and more robust than previous versions.
52df9de0ebSDavid E. O'Brien
53df9de0ebSDavid E. O'Brien
54df9de0ebSDavid E. O'BrienHOW TO BUILD -- Windows 95, NT, DOS, Mac, etc.
55df9de0ebSDavid E. O'Brien
56df9de0ebSDavid E. O'BrienIt's difficult for me to support compilation on all these platforms.
57df9de0ebSDavid E. O'BrienMy approach is to collect binaries for these platforms, and put them
58df9de0ebSDavid E. O'Brienon the master web page (http://sourceware.cygnus.com/bzip2).  Look
59df9de0ebSDavid E. O'Brienthere.  However (FWIW), bzip2-1.0 is very standard ANSI C and should
60df9de0ebSDavid E. O'Briencompile unmodified with MS Visual C.  For Win32, there is one
61df9de0ebSDavid E. O'Brienimportant caveat: in bzip2.c, you must set BZ_UNIX to 0 and
62df9de0ebSDavid E. O'BrienBZ_LCCWIN32 to 1 before building.  If you have difficulties building,
63df9de0ebSDavid E. O'Brienyou might want to read README.COMPILATION.PROBLEMS.
64df9de0ebSDavid E. O'Brien
65df9de0ebSDavid E. O'Brien
66df9de0ebSDavid E. O'BrienVALIDATION
67df9de0ebSDavid E. O'Brien
68df9de0ebSDavid E. O'BrienCorrect operation, in the sense that a compressed file can always be
69df9de0ebSDavid E. O'Briendecompressed to reproduce the original, is obviously of paramount
70df9de0ebSDavid E. O'Brienimportance.  To validate bzip2, I used a modified version of Mark
71df9de0ebSDavid E. O'BrienNelson's churn program.  Churn is an automated test driver which
72df9de0ebSDavid E. O'Brienrecursively traverses a directory structure, using bzip2 to compress
73df9de0ebSDavid E. O'Brienand then decompress each file it encounters, and checking that the
74df9de0ebSDavid E. O'Briendecompressed data is the same as the original.  There are more details
75df9de0ebSDavid E. O'Brienin Section 4 of the user guide.
76df9de0ebSDavid E. O'Brien
77df9de0ebSDavid E. O'Brien
78df9de0ebSDavid E. O'Brien
79df9de0ebSDavid E. O'BrienPlease read and be aware of the following:
80df9de0ebSDavid E. O'Brien
81df9de0ebSDavid E. O'BrienWARNING:
82df9de0ebSDavid E. O'Brien
83df9de0ebSDavid E. O'Brien   This program (attempts to) compress data by performing several
84df9de0ebSDavid E. O'Brien   non-trivial transformations on it.  Unless you are 100% familiar
85df9de0ebSDavid E. O'Brien   with *all* the algorithms contained herein, and with the
86df9de0ebSDavid E. O'Brien   consequences of modifying them, you should NOT meddle with the
87df9de0ebSDavid E. O'Brien   compression or decompression machinery.  Incorrect changes can and
88df9de0ebSDavid E. O'Brien   very likely *will* lead to disastrous loss of data.
89df9de0ebSDavid E. O'Brien
90df9de0ebSDavid E. O'Brien
91df9de0ebSDavid E. O'BrienDISCLAIMER:
92df9de0ebSDavid E. O'Brien
93df9de0ebSDavid E. O'Brien   I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE
94df9de0ebSDavid E. O'Brien   USE OF THIS PROGRAM, HOWSOEVER CAUSED.
95df9de0ebSDavid E. O'Brien
96df9de0ebSDavid E. O'Brien   Every compression of a file implies an assumption that the
97df9de0ebSDavid E. O'Brien   compressed file can be decompressed to reproduce the original.
98df9de0ebSDavid E. O'Brien   Great efforts in design, coding and testing have been made to
99df9de0ebSDavid E. O'Brien   ensure that this program works correctly.  However, the complexity
100df9de0ebSDavid E. O'Brien   of the algorithms, and, in particular, the presence of various
101df9de0ebSDavid E. O'Brien   special cases in the code which occur with very low but non-zero
102df9de0ebSDavid E. O'Brien   probability make it impossible to rule out the possibility of bugs
103df9de0ebSDavid E. O'Brien   remaining in the program.  DO NOT COMPRESS ANY DATA WITH THIS
104df9de0ebSDavid E. O'Brien   PROGRAM UNLESS YOU ARE PREPARED TO ACCEPT THE POSSIBILITY, HOWEVER
105df9de0ebSDavid E. O'Brien   SMALL, THAT THE DATA WILL NOT BE RECOVERABLE.
106df9de0ebSDavid E. O'Brien
107df9de0ebSDavid E. O'Brien   That is not to say this program is inherently unreliable.  Indeed,
108df9de0ebSDavid E. O'Brien   I very much hope the opposite is true.  bzip2 has been carefully
109df9de0ebSDavid E. O'Brien   constructed and extensively tested.
110df9de0ebSDavid E. O'Brien
111df9de0ebSDavid E. O'Brien
112df9de0ebSDavid E. O'BrienPATENTS:
113df9de0ebSDavid E. O'Brien
114df9de0ebSDavid E. O'Brien   To the best of my knowledge, bzip2 does not use any patented
115df9de0ebSDavid E. O'Brien   algorithms.  However, I do not have the resources available to
116df9de0ebSDavid E. O'Brien   carry out a full patent search.  Therefore I cannot give any
117df9de0ebSDavid E. O'Brien   guarantee of the above statement.
118df9de0ebSDavid E. O'Brien
119df9de0ebSDavid E. O'BrienEnd of legalities.
120df9de0ebSDavid E. O'Brien
121df9de0ebSDavid E. O'Brien
122df9de0ebSDavid E. O'BrienWHAT'S NEW IN 0.9.0 (as compared to 0.1pl2) ?
123df9de0ebSDavid E. O'Brien
124df9de0ebSDavid E. O'Brien   * Approx 10% faster compression, 30% faster decompression
125df9de0ebSDavid E. O'Brien   * -t (test mode) is a lot quicker
126df9de0ebSDavid E. O'Brien   * Can decompress concatenated compressed files
127df9de0ebSDavid E. O'Brien   * Programming interface, so programs can directly read/write .bz2 files
128df9de0ebSDavid E. O'Brien   * Less restrictive (BSD-style) licensing
129df9de0ebSDavid E. O'Brien   * Flag handling more compatible with GNU gzip
130df9de0ebSDavid E. O'Brien   * Much more documentation, i.e., a proper user manual
131df9de0ebSDavid E. O'Brien   * Hopefully, improved portability (at least of the library)
132df9de0ebSDavid E. O'Brien
133df9de0ebSDavid E. O'BrienWHAT'S NEW IN 0.9.5 ?
134df9de0ebSDavid E. O'Brien
135df9de0ebSDavid E. O'Brien   * Compression speed is much less sensitive to the input
136df9de0ebSDavid E. O'Brien     data than in previous versions.  Specifically, the very
137df9de0ebSDavid E. O'Brien     slow performance caused by repetitive data is fixed.
138df9de0ebSDavid E. O'Brien   * Many small improvements in file and flag handling.
139df9de0ebSDavid E. O'Brien   * A Y2K statement.
140df9de0ebSDavid E. O'Brien
141df9de0ebSDavid E. O'BrienWHAT'S NEW IN 1.0
142df9de0ebSDavid E. O'Brien
143df9de0ebSDavid E. O'Brien   See the CHANGES file.
144df9de0ebSDavid E. O'Brien
145df9de0ebSDavid E. O'BrienI hope you find bzip2 useful.  Feel free to contact me at
146df9de0ebSDavid E. O'Brien   jseward@acm.org
147df9de0ebSDavid E. O'Brienif you have any suggestions or queries.  Many people mailed me with
148df9de0ebSDavid E. O'Briencomments, suggestions and patches after the releases of bzip-0.15,
149df9de0ebSDavid E. O'Brienbzip-0.21, bzip2-0.1pl2 and bzip2-0.9.0, and the changes in bzip2 are
150df9de0ebSDavid E. O'Brienlargely a result of this feedback.  I thank you for your comments.
151df9de0ebSDavid E. O'Brien
152df9de0ebSDavid E. O'BrienAt least for the time being, bzip2's "home" is (or can be reached via)
153df9de0ebSDavid E. O'Brienhttp://www.muraroa.demon.co.uk.
154df9de0ebSDavid E. O'Brien
155df9de0ebSDavid E. O'BrienJulian Seward
156df9de0ebSDavid E. O'Brienjseward@acm.org
157df9de0ebSDavid E. O'Brien
158df9de0ebSDavid E. O'BrienCambridge, UK
159df9de0ebSDavid E. O'Brien18   July 1996 (version 0.15)
160df9de0ebSDavid E. O'Brien25 August 1996 (version 0.21)
161df9de0ebSDavid E. O'Brien 7 August 1997 (bzip2, version 0.1)
162df9de0ebSDavid E. O'Brien29 August 1997 (bzip2, version 0.1pl2)
163df9de0ebSDavid E. O'Brien23 August 1998 (bzip2, version 0.9.0)
164df9de0ebSDavid E. O'Brien 8   June 1999 (bzip2, version 0.9.5)
165df9de0ebSDavid E. O'Brien 4   Sept 1999 (bzip2, version 0.9.5d)
166df9de0ebSDavid E. O'Brien 5    May 2000 (bzip2, version 1.0pre8)
167