Go to file
Paul Kehrer 451f31b927 Fix undefined behavior in the macros SET_BH, CLEAR_BH, & ISSET_BH
These macros contain this pattern:
1 << ((Int32_value) & 31

This causes the undefined behavior sanitizers in clang and gcc to
complain because the shift, while ultimately stored to an unsigned
variable, is done as a signed value. Adding a cast to unsigned for
the int32 value resolves this issue.
2019-06-08 10:06:40 -04:00
docs move documentation into a docs/ folder 2019-06-06 14:18:47 -07:00
man Move man files into a man/ directory 2019-06-06 14:18:47 -07:00
tests Move tests into a tests/ directory 2019-06-06 14:18:47 -07:00
.gitignore gitignore: Add autotools generated files 2019-06-06 11:10:32 -07:00
.gitlab-ci.yml CI: use meson test instead of ninja test 2019-06-07 21:51:04 +03:00
AUTHORS Add AUTHORS from the NEWS file 2019-06-05 18:55:59 -05:00
autogen.sh Have a smarter autogen.sh 2019-06-05 18:55:59 -05:00
blocksort.c Fix undefined behavior in the macros SET_BH, CLEAR_BH, & ISSET_BH 2019-06-08 10:06:40 -04:00
bzdiff bzip2-1.0.4 2006-12-20 22:13:13 +01:00
bzgrep Fix bzgrep so it doesn't always return a 0 exit code 2019-06-05 18:54:50 -05:00
bzip2.c add meson build system 2019-06-06 11:10:32 -07:00
bzip2.doap Add a bzip2.doap file 2019-06-07 18:45:55 -05:00
bzip2.pc.in Add an autotools framework and pkg-config data 2019-06-05 18:54:50 -05:00
bzip2.txt Change all bzip.org URLs to sourceware.org/bzip2 2019-03-30 22:56:16 +01:00
bzip2recover.c CVE-2016-3189 - fix use-after-free in bzip2recover 2019-06-05 18:54:50 -05:00
bzlib_private.h Change Julian's email address to jseward@acm.org 2019-03-30 22:56:16 +01:00
bzlib.c bzopen_or_bzdopen() - Open files with O_CLOEXEC with the "e" mode 2019-06-05 18:55:59 -05:00
bzlib.h bzip2: fix mingw compilation 2019-06-07 12:35:05 -07:00
bzmore bzip2-1.0.2 2001-12-30 22:13:13 +01:00
code-of-conduct.md Add the Contributor Covenant Code of Conduct 1.4 2019-06-07 16:59:58 -05:00
compress.c Change Julian's email address to jseward@acm.org 2019-03-30 22:56:16 +01:00
configure.ac Bump version to 1.0.7 2019-06-05 18:55:59 -05:00
COPYING Rename LICENSE to COPYING 2019-06-05 18:54:50 -05:00
crctable.c Change Julian's email address to jseward@acm.org 2019-03-30 22:56:16 +01:00
decompress.c Change a magic number for a constant 2019-06-05 18:55:59 -05:00
dlltest.c bzip2-1.0.4 2006-12-20 22:13:13 +01:00
dlltest.dsp bzip2-0.9.0c 1998-08-23 22:13:13 +02:00
huffman.c Change Julian's email address to jseward@acm.org 2019-03-30 22:56:16 +01:00
INSTALL Turn README into README.md and update it 2019-06-07 17:41:37 -05:00
libbz2.def meson: Support dlls with msvc 2019-06-07 12:35:05 -07:00
libbz2.dsp bzip2-0.9.0c 1998-08-23 22:13:13 +02:00
Makefile.am move documentation into a docs/ folder 2019-06-06 14:18:47 -07:00
makefile.msc Move tests into a tests/ directory 2019-06-06 14:18:47 -07:00
meson_options.txt add meson build system 2019-06-06 11:10:32 -07:00
meson.build meson: Support dlls with msvc 2019-06-07 12:35:05 -07:00
mk251.c Change Julian's email address to jseward@acm.org 2019-03-30 22:56:16 +01:00
NEWS Turn README into README.md and update it 2019-06-07 17:41:37 -05:00
patches-not-included.txt bzopen_or_bzdopen() - Open files with O_CLOEXEC with the "e" mode 2019-06-05 18:55:59 -05:00
randtable.c Change Julian's email address to jseward@acm.org 2019-03-30 22:56:16 +01:00
README.autotools Update README.autotools 2019-06-05 18:59:32 -05:00
README.md More markup fixing 2019-06-07 17:48:05 -05:00
README.XML.STUFF Change Julian's email address to jseward@acm.org 2019-03-30 22:56:16 +01:00
spewG.c Change Julian's email address to jseward@acm.org 2019-03-30 22:56:16 +01:00
unzcrash.c Change Julian's email address to jseward@acm.org 2019-03-30 22:56:16 +01:00
visibility.m4 Add an autotools framework and pkg-config data 2019-06-05 18:54:50 -05:00

Bzip2

This Bzip2/libbz2, a program and library for lossless, block-sorting data compression.

Copyright (C) 1996-2010 Julian Seward jseward@acm.org

Copyright (C) 2019 Federico Mena Quintero federico@gnome.org

Please read the WARNING, DISCLAIMER and PATENTS sections in this file for important information.

This program is released under the terms of the license contained in the file COPYING.


This version is fully compatible with the previous public releases.

Complete documentation is available in Postscript form (manual.ps), PDF (manual.pdf) or HTML (manual.html). A plain-text version of the manual page is available as bzip2.txt.

Contributing to Bzip2's development

There is a code of conduct for contributors to Bzip2/libbz2; please see the file code-of-conduct.md.

Bzip2's source repository is at gitlab.com. You can view the web interface here:

https://gitlab.com/federicomenaquintero/bzip2

Maintenance happens in the master branch. There is an effort to port Bzip2 gradually to Rust in a rustify branch.

To report bugs, or to view existing reports, please do so in Bzip2's repository as well.

Compiling Bzip2 and libbz2

Bzip2 can be compiled with the Meson build system or with GNU Autotools. You need at least a C compiler.

Build instructions for Unix (Meson)

The Meson build system is the preferred way of building Bzip2. You can use these commands to build Bzip2 in a certain builddir directory.

meson --prefix /usr builddir
ninja -C builddir
meson test -C builddir --print-errorlogs
ninja -C builddir install

Build instructions for Unix (Autotools)

If you are compiling a tarball:

./configure --prefix=/usr
make
make check
make install

See the INSTALL file for details on options you can pass to the configure script to select where to install the compiled library.

If you are compiling from a git checkout:

./autogen.sh --prefix=/usr
make
make check
make install

Build instructions for Windows

At least using MS Visual C++ 6, you can build from the unmodified sources with makefile.msc by issuing, in a command shell:

nmake -f makefile.msc

(you may need to first run the MSVC-provided script VCVARS32.BAT so as to set up paths to the MSVC tools correctly).

WARNING

This program and library (attempts to) compress data by performing several non-trivial transformations on it. Unless you are 100% familiar with all the algorithms contained herein, and with the consequences of modifying them, you should NOT meddle with the compression or decompression machinery. Incorrect changes can and very likely will lead to disastrous loss of data.

Please contact the maintainers if you want to modify the algorithms.

DISCLAIMER

I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE USE OF THIS PROGRAM/LIBRARY, HOWSOEVER CAUSED.

Every compression of a file implies an assumption that the compressed file can be decompressed to reproduce the original. Great efforts in design, coding and testing have been made to ensure that this program works correctly. However, the complexity of the algorithms, and, in particular, the presence of various special cases in the code which occur with very low but non-zero probability make it impossible to rule out the possibility of bugs remaining in the program. DO NOT COMPRESS ANY DATA WITH THIS PROGRAM UNLESS YOU ARE PREPARED TO ACCEPT THE POSSIBILITY, HOWEVER SMALL, THAT THE DATA WILL NOT BE RECOVERABLE.

That is not to say this program is inherently unreliable. Indeed, I very much hope the opposite is true. Bzip2/libbz2 has been carefully constructed and extensively tested.

PATENTS

To the best of my knowledge, Bzip2/libbz2 does not use any patented algorithms. However, I do not have the resources to carry out a patent search. Therefore I cannot give any guarantee of the above statement.

Maintainers

Since June 2019, the maintainer of Bzip2/libbz2 is Federico Mena Quintero. Feel free to contact me for any questions you may have about Bzip2, both its usage and its development. You can contact me in the following ways:

  • Mail me at federico@gnome.org.

  • IRC: I am federico on irc.gnome.org in the #rust or #gnome-hackers channels. I'm there most weekdays (Mon-Fri) starting at about UTC 14:00 (that's 08:00 my time; I am in the UTC-6 timezone). If this is not a convenient time for you, feel free to mail me and we can arrange a time.

Special thanks

Federico would like to thank Julian Seward, the original author of Bzip2/libbz2, for creating the program and making it a very compelling alternative to previous compression programs back in the early 2000's. Thanks to Julian also for letting Federico carry on with the maintainership of the program.