| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,217 @@ | ||
| # ------------------------------------------------------------------ | ||
| # This file is part of bzip2/libbzip2, a program and library for | ||
| # lossless, block-sorting data compression. | ||
| # | ||
| # bzip2/libbzip2 version 1.0.6 of 6 September 2010 | ||
| # Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org> | ||
| # | ||
| # Please read the WARNING, DISCLAIMER and PATENTS sections in the | ||
| # README file. | ||
| # | ||
| # This program is released under the terms of the license contained | ||
| # in the file LICENSE. | ||
| # ------------------------------------------------------------------ | ||
|
|
||
| SHELL=/bin/sh | ||
|
|
||
| # To assist in cross-compiling | ||
| CC=gcc | ||
| AR=ar | ||
| RANLIB=ranlib | ||
| LDFLAGS= | ||
|
|
||
| BIGFILES=-D_FILE_OFFSET_BITS=64 | ||
| CFLAGS=-Wall -Winline -O2 -g $(BIGFILES) | ||
|
|
||
| # Where you want it installed when you do 'make install' | ||
| PREFIX=/usr/local | ||
|
|
||
|
|
||
| OBJS= blocksort.o \ | ||
| huffman.o \ | ||
| crctable.o \ | ||
| randtable.o \ | ||
| compress.o \ | ||
| decompress.o \ | ||
| bzlib.o | ||
|
|
||
| all: libbz2.a bzip2 bzip2recover test | ||
|
|
||
| bzip2: libbz2.a bzip2.o | ||
| $(CC) $(CFLAGS) $(LDFLAGS) -o bzip2 bzip2.o -L. -lbz2 | ||
|
|
||
| bzip2recover: bzip2recover.o | ||
| $(CC) $(CFLAGS) $(LDFLAGS) -o bzip2recover bzip2recover.o | ||
|
|
||
| libbz2.a: $(OBJS) | ||
| rm -f libbz2.a | ||
| $(AR) cq libbz2.a $(OBJS) | ||
| @if ( test -f $(RANLIB) -o -f /usr/bin/ranlib -o \ | ||
| -f /bin/ranlib -o -f /usr/ccs/bin/ranlib ) ; then \ | ||
| echo $(RANLIB) libbz2.a ; \ | ||
| $(RANLIB) libbz2.a ; \ | ||
| fi | ||
|
|
||
| check: test | ||
| test: bzip2 | ||
| @cat words1 | ||
| ./bzip2 -1 < sample1.ref > sample1.rb2 | ||
| ./bzip2 -2 < sample2.ref > sample2.rb2 | ||
| ./bzip2 -3 < sample3.ref > sample3.rb2 | ||
| ./bzip2 -d < sample1.bz2 > sample1.tst | ||
| ./bzip2 -d < sample2.bz2 > sample2.tst | ||
| ./bzip2 -ds < sample3.bz2 > sample3.tst | ||
| cmp sample1.bz2 sample1.rb2 | ||
| cmp sample2.bz2 sample2.rb2 | ||
| cmp sample3.bz2 sample3.rb2 | ||
| cmp sample1.tst sample1.ref | ||
| cmp sample2.tst sample2.ref | ||
| cmp sample3.tst sample3.ref | ||
| @cat words3 | ||
|
|
||
| install: bzip2 bzip2recover | ||
| if ( test ! -d $(PREFIX)/bin ) ; then mkdir -p $(PREFIX)/bin ; fi | ||
| if ( test ! -d $(PREFIX)/lib ) ; then mkdir -p $(PREFIX)/lib ; fi | ||
| if ( test ! -d $(PREFIX)/man ) ; then mkdir -p $(PREFIX)/man ; fi | ||
| if ( test ! -d $(PREFIX)/man/man1 ) ; then mkdir -p $(PREFIX)/man/man1 ; fi | ||
| if ( test ! -d $(PREFIX)/include ) ; then mkdir -p $(PREFIX)/include ; fi | ||
| cp -f bzip2 $(PREFIX)/bin/bzip2 | ||
| cp -f bzip2 $(PREFIX)/bin/bunzip2 | ||
| cp -f bzip2 $(PREFIX)/bin/bzcat | ||
| cp -f bzip2recover $(PREFIX)/bin/bzip2recover | ||
| chmod a+x $(PREFIX)/bin/bzip2 | ||
| chmod a+x $(PREFIX)/bin/bunzip2 | ||
| chmod a+x $(PREFIX)/bin/bzcat | ||
| chmod a+x $(PREFIX)/bin/bzip2recover | ||
| cp -f bzip2.1 $(PREFIX)/man/man1 | ||
| chmod a+r $(PREFIX)/man/man1/bzip2.1 | ||
| cp -f bzlib.h $(PREFIX)/include | ||
| chmod a+r $(PREFIX)/include/bzlib.h | ||
| cp -f libbz2.a $(PREFIX)/lib | ||
| chmod a+r $(PREFIX)/lib/libbz2.a | ||
| cp -f bzgrep $(PREFIX)/bin/bzgrep | ||
| ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzegrep | ||
| ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzfgrep | ||
| chmod a+x $(PREFIX)/bin/bzgrep | ||
| cp -f bzmore $(PREFIX)/bin/bzmore | ||
| ln -s -f $(PREFIX)/bin/bzmore $(PREFIX)/bin/bzless | ||
| chmod a+x $(PREFIX)/bin/bzmore | ||
| cp -f bzdiff $(PREFIX)/bin/bzdiff | ||
| ln -s -f $(PREFIX)/bin/bzdiff $(PREFIX)/bin/bzcmp | ||
| chmod a+x $(PREFIX)/bin/bzdiff | ||
| cp -f bzgrep.1 bzmore.1 bzdiff.1 $(PREFIX)/man/man1 | ||
| chmod a+r $(PREFIX)/man/man1/bzgrep.1 | ||
| chmod a+r $(PREFIX)/man/man1/bzmore.1 | ||
| chmod a+r $(PREFIX)/man/man1/bzdiff.1 | ||
| echo ".so man1/bzgrep.1" > $(PREFIX)/man/man1/bzegrep.1 | ||
| echo ".so man1/bzgrep.1" > $(PREFIX)/man/man1/bzfgrep.1 | ||
| echo ".so man1/bzmore.1" > $(PREFIX)/man/man1/bzless.1 | ||
| echo ".so man1/bzdiff.1" > $(PREFIX)/man/man1/bzcmp.1 | ||
|
|
||
| clean: | ||
| rm -f *.o libbz2.a bzip2 bzip2recover \ | ||
| sample1.rb2 sample2.rb2 sample3.rb2 \ | ||
| sample1.tst sample2.tst sample3.tst | ||
|
|
||
| blocksort.o: blocksort.c | ||
| @cat words0 | ||
| $(CC) $(CFLAGS) -c blocksort.c | ||
| huffman.o: huffman.c | ||
| $(CC) $(CFLAGS) -c huffman.c | ||
| crctable.o: crctable.c | ||
| $(CC) $(CFLAGS) -c crctable.c | ||
| randtable.o: randtable.c | ||
| $(CC) $(CFLAGS) -c randtable.c | ||
| compress.o: compress.c | ||
| $(CC) $(CFLAGS) -c compress.c | ||
| decompress.o: decompress.c | ||
| $(CC) $(CFLAGS) -c decompress.c | ||
| bzlib.o: bzlib.c | ||
| $(CC) $(CFLAGS) -c bzlib.c | ||
| bzip2.o: bzip2.c | ||
| $(CC) $(CFLAGS) -c bzip2.c | ||
| bzip2recover.o: bzip2recover.c | ||
| $(CC) $(CFLAGS) -c bzip2recover.c | ||
|
|
||
|
|
||
| distclean: clean | ||
| rm -f manual.ps manual.html manual.pdf | ||
|
|
||
| DISTNAME=bzip2-1.0.6 | ||
| dist: check manual | ||
| rm -f $(DISTNAME) | ||
| ln -s -f . $(DISTNAME) | ||
| tar cvf $(DISTNAME).tar \ | ||
| $(DISTNAME)/blocksort.c \ | ||
| $(DISTNAME)/huffman.c \ | ||
| $(DISTNAME)/crctable.c \ | ||
| $(DISTNAME)/randtable.c \ | ||
| $(DISTNAME)/compress.c \ | ||
| $(DISTNAME)/decompress.c \ | ||
| $(DISTNAME)/bzlib.c \ | ||
| $(DISTNAME)/bzip2.c \ | ||
| $(DISTNAME)/bzip2recover.c \ | ||
| $(DISTNAME)/bzlib.h \ | ||
| $(DISTNAME)/bzlib_private.h \ | ||
| $(DISTNAME)/Makefile \ | ||
| $(DISTNAME)/LICENSE \ | ||
| $(DISTNAME)/bzip2.1 \ | ||
| $(DISTNAME)/bzip2.1.preformatted \ | ||
| $(DISTNAME)/bzip2.txt \ | ||
| $(DISTNAME)/words0 \ | ||
| $(DISTNAME)/words1 \ | ||
| $(DISTNAME)/words2 \ | ||
| $(DISTNAME)/words3 \ | ||
| $(DISTNAME)/sample1.ref \ | ||
| $(DISTNAME)/sample2.ref \ | ||
| $(DISTNAME)/sample3.ref \ | ||
| $(DISTNAME)/sample1.bz2 \ | ||
| $(DISTNAME)/sample2.bz2 \ | ||
| $(DISTNAME)/sample3.bz2 \ | ||
| $(DISTNAME)/dlltest.c \ | ||
| $(DISTNAME)/manual.html \ | ||
| $(DISTNAME)/manual.pdf \ | ||
| $(DISTNAME)/manual.ps \ | ||
| $(DISTNAME)/README \ | ||
| $(DISTNAME)/README.COMPILATION.PROBLEMS \ | ||
| $(DISTNAME)/README.XML.STUFF \ | ||
| $(DISTNAME)/CHANGES \ | ||
| $(DISTNAME)/libbz2.def \ | ||
| $(DISTNAME)/libbz2.dsp \ | ||
| $(DISTNAME)/dlltest.dsp \ | ||
| $(DISTNAME)/makefile.msc \ | ||
| $(DISTNAME)/unzcrash.c \ | ||
| $(DISTNAME)/spewG.c \ | ||
| $(DISTNAME)/mk251.c \ | ||
| $(DISTNAME)/bzdiff \ | ||
| $(DISTNAME)/bzdiff.1 \ | ||
| $(DISTNAME)/bzmore \ | ||
| $(DISTNAME)/bzmore.1 \ | ||
| $(DISTNAME)/bzgrep \ | ||
| $(DISTNAME)/bzgrep.1 \ | ||
| $(DISTNAME)/Makefile-libbz2_so \ | ||
| $(DISTNAME)/bz-common.xsl \ | ||
| $(DISTNAME)/bz-fo.xsl \ | ||
| $(DISTNAME)/bz-html.xsl \ | ||
| $(DISTNAME)/bzip.css \ | ||
| $(DISTNAME)/entities.xml \ | ||
| $(DISTNAME)/manual.xml \ | ||
| $(DISTNAME)/format.pl \ | ||
| $(DISTNAME)/xmlproc.sh | ||
| gzip -v $(DISTNAME).tar | ||
|
|
||
| # For rebuilding the manual from sources on my SuSE 9.1 box | ||
|
|
||
| MANUAL_SRCS= bz-common.xsl bz-fo.xsl bz-html.xsl bzip.css \ | ||
| entities.xml manual.xml | ||
|
|
||
| manual: manual.html manual.ps manual.pdf | ||
|
|
||
| manual.ps: $(MANUAL_SRCS) | ||
| ./xmlproc.sh -ps manual.xml | ||
|
|
||
| manual.pdf: $(MANUAL_SRCS) | ||
| ./xmlproc.sh -pdf manual.xml | ||
|
|
||
| manual.html: $(MANUAL_SRCS) | ||
| ./xmlproc.sh -html manual.xml |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,59 @@ | ||
|
|
||
| # This Makefile builds a shared version of the library, | ||
| # libbz2.so.1.0.6, with soname libbz2.so.1.0, | ||
| # at least on x86-Linux (RedHat 7.2), | ||
| # with gcc-2.96 20000731 (Red Hat Linux 7.1 2.96-98). | ||
| # Please see the README file for some important info | ||
| # about building the library like this. | ||
|
|
||
| # ------------------------------------------------------------------ | ||
| # This file is part of bzip2/libbzip2, a program and library for | ||
| # lossless, block-sorting data compression. | ||
| # | ||
| # bzip2/libbzip2 version 1.0.6 of 6 September 2010 | ||
| # Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org> | ||
| # | ||
| # Please read the WARNING, DISCLAIMER and PATENTS sections in the | ||
| # README file. | ||
| # | ||
| # This program is released under the terms of the license contained | ||
| # in the file LICENSE. | ||
| # ------------------------------------------------------------------ | ||
|
|
||
|
|
||
| SHELL=/bin/sh | ||
| CC=gcc | ||
| BIGFILES=-D_FILE_OFFSET_BITS=64 | ||
| CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES) | ||
|
|
||
| OBJS= blocksort.o \ | ||
| huffman.o \ | ||
| crctable.o \ | ||
| randtable.o \ | ||
| compress.o \ | ||
| decompress.o \ | ||
| bzlib.o | ||
|
|
||
| all: $(OBJS) | ||
| $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.6 $(OBJS) | ||
| $(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.6 | ||
| rm -f libbz2.so.1.0 | ||
| ln -s libbz2.so.1.0.6 libbz2.so.1.0 | ||
|
|
||
| clean: | ||
| rm -f $(OBJS) bzip2.o libbz2.so.1.0.6 libbz2.so.1.0 bzip2-shared | ||
|
|
||
| blocksort.o: blocksort.c | ||
| $(CC) $(CFLAGS) -c blocksort.c | ||
| huffman.o: huffman.c | ||
| $(CC) $(CFLAGS) -c huffman.c | ||
| crctable.o: crctable.c | ||
| $(CC) $(CFLAGS) -c crctable.c | ||
| randtable.o: randtable.c | ||
| $(CC) $(CFLAGS) -c randtable.c | ||
| compress.o: compress.c | ||
| $(CC) $(CFLAGS) -c compress.c | ||
| decompress.o: decompress.c | ||
| $(CC) $(CFLAGS) -c decompress.c | ||
| bzlib.o: bzlib.c | ||
| $(CC) $(CFLAGS) -c bzlib.c |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,215 @@ | ||
|
|
||
| This is the README for bzip2/libzip2. | ||
| This version is fully compatible with the previous public releases. | ||
|
|
||
| ------------------------------------------------------------------ | ||
| This file is part of bzip2/libbzip2, a program and library for | ||
| lossless, block-sorting data compression. | ||
|
|
||
| bzip2/libbzip2 version 1.0.6 of 6 September 2010 | ||
| Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org> | ||
|
|
||
| Please read the WARNING, DISCLAIMER and PATENTS sections in this file. | ||
|
|
||
| This program is released under the terms of the license contained | ||
| in the file LICENSE. | ||
| ------------------------------------------------------------------ | ||
|
|
||
| Complete documentation is available in Postscript form (manual.ps), | ||
| PDF (manual.pdf) or html (manual.html). A plain-text version of the | ||
| manual page is available as bzip2.txt. | ||
|
|
||
|
|
||
| HOW TO BUILD -- UNIX | ||
|
|
||
| Type 'make'. This builds the library libbz2.a and then the programs | ||
| bzip2 and bzip2recover. Six self-tests are run. If the self-tests | ||
| complete ok, carry on to installation: | ||
|
|
||
| To install in /usr/local/bin, /usr/local/lib, /usr/local/man and | ||
| /usr/local/include, type | ||
|
|
||
| make install | ||
|
|
||
| To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type | ||
|
|
||
| make install PREFIX=/xxx/yyy | ||
|
|
||
| If you are (justifiably) paranoid and want to see what 'make install' | ||
| is going to do, you can first do | ||
|
|
||
| make -n install or | ||
| make -n install PREFIX=/xxx/yyy respectively. | ||
|
|
||
| The -n instructs make to show the commands it would execute, but not | ||
| actually execute them. | ||
|
|
||
|
|
||
| HOW TO BUILD -- UNIX, shared library libbz2.so. | ||
|
|
||
| Do 'make -f Makefile-libbz2_so'. This Makefile seems to work for | ||
| Linux-ELF (RedHat 7.2 on an x86 box), with gcc. I make no claims | ||
| that it works for any other platform, though I suspect it probably | ||
| will work for most platforms employing both ELF and gcc. | ||
|
|
||
| bzip2-shared, a client of the shared library, is also built, but not | ||
| self-tested. So I suggest you also build using the normal Makefile, | ||
| since that conducts a self-test. A second reason to prefer the | ||
| version statically linked to the library is that, on x86 platforms, | ||
| building shared objects makes a valuable register (%ebx) unavailable | ||
| to gcc, resulting in a slowdown of 10%-20%, at least for bzip2. | ||
|
|
||
| Important note for people upgrading .so's from 0.9.0/0.9.5 to version | ||
| 1.0.X. All the functions in the library have been renamed, from (eg) | ||
| bzCompress to BZ2_bzCompress, to avoid namespace pollution. | ||
| Unfortunately this means that the libbz2.so created by | ||
| Makefile-libbz2_so will not work with any program which used an older | ||
| version of the library. I do encourage library clients to make the | ||
| effort to upgrade to use version 1.0, since it is both faster and more | ||
| robust than previous versions. | ||
|
|
||
|
|
||
| HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc. | ||
|
|
||
| It's difficult for me to support compilation on all these platforms. | ||
| My approach is to collect binaries for these platforms, and put them | ||
| on the master web site (http://www.bzip.org). Look there. However | ||
| (FWIW), bzip2-1.0.X is very standard ANSI C and should compile | ||
| unmodified with MS Visual C. If you have difficulties building, you | ||
| might want to read README.COMPILATION.PROBLEMS. | ||
|
|
||
| At least using MS Visual C++ 6, you can build from the unmodified | ||
| sources by issuing, in a command shell: | ||
|
|
||
| nmake -f makefile.msc | ||
|
|
||
| (you may need to first run the MSVC-provided script VCVARS32.BAT | ||
| so as to set up paths to the MSVC tools correctly). | ||
|
|
||
|
|
||
| VALIDATION | ||
|
|
||
| Correct operation, in the sense that a compressed file can always be | ||
| decompressed to reproduce the original, is obviously of paramount | ||
| importance. To validate bzip2, I used a modified version of Mark | ||
| Nelson's churn program. Churn is an automated test driver which | ||
| recursively traverses a directory structure, using bzip2 to compress | ||
| and then decompress each file it encounters, and checking that the | ||
| decompressed data is the same as the original. | ||
|
|
||
|
|
||
|
|
||
| Please read and be aware of the following: | ||
|
|
||
| WARNING: | ||
|
|
||
| This program and library (attempts to) compress data by | ||
| performing several non-trivial transformations on it. | ||
| Unless you are 100% familiar with *all* the algorithms | ||
| contained herein, and with the consequences of modifying them, | ||
| you should NOT meddle with the compression or decompression | ||
| machinery. Incorrect changes can and very likely *will* | ||
| lead to disastrous loss of data. | ||
|
|
||
|
|
||
| DISCLAIMER: | ||
|
|
||
| I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE | ||
| USE OF THIS PROGRAM/LIBRARY, HOWSOEVER CAUSED. | ||
|
|
||
| Every compression of a file implies an assumption that the | ||
| compressed file can be decompressed to reproduce the original. | ||
| Great efforts in design, coding and testing have been made to | ||
| ensure that this program works correctly. However, the complexity | ||
| of the algorithms, and, in particular, the presence of various | ||
| special cases in the code which occur with very low but non-zero | ||
| probability make it impossible to rule out the possibility of bugs | ||
| remaining in the program. DO NOT COMPRESS ANY DATA WITH THIS | ||
| PROGRAM UNLESS YOU ARE PREPARED TO ACCEPT THE POSSIBILITY, HOWEVER | ||
| SMALL, THAT THE DATA WILL NOT BE RECOVERABLE. | ||
|
|
||
| That is not to say this program is inherently unreliable. | ||
| Indeed, I very much hope the opposite is true. bzip2/libbzip2 | ||
| has been carefully constructed and extensively tested. | ||
|
|
||
|
|
||
| PATENTS: | ||
|
|
||
| To the best of my knowledge, bzip2/libbzip2 does not use any | ||
| patented algorithms. However, I do not have the resources | ||
| to carry out a patent search. Therefore I cannot give any | ||
| guarantee of the above statement. | ||
|
|
||
|
|
||
|
|
||
| WHAT'S NEW IN 0.9.0 (as compared to 0.1pl2) ? | ||
|
|
||
| * Approx 10% faster compression, 30% faster decompression | ||
| * -t (test mode) is a lot quicker | ||
| * Can decompress concatenated compressed files | ||
| * Programming interface, so programs can directly read/write .bz2 files | ||
| * Less restrictive (BSD-style) licensing | ||
| * Flag handling more compatible with GNU gzip | ||
| * Much more documentation, i.e., a proper user manual | ||
| * Hopefully, improved portability (at least of the library) | ||
|
|
||
| WHAT'S NEW IN 0.9.5 ? | ||
|
|
||
| * Compression speed is much less sensitive to the input | ||
| data than in previous versions. Specifically, the very | ||
| slow performance caused by repetitive data is fixed. | ||
| * Many small improvements in file and flag handling. | ||
| * A Y2K statement. | ||
|
|
||
| WHAT'S NEW IN 1.0.0 ? | ||
|
|
||
| See the CHANGES file. | ||
|
|
||
| WHAT'S NEW IN 1.0.2 ? | ||
|
|
||
| See the CHANGES file. | ||
|
|
||
| WHAT'S NEW IN 1.0.3 ? | ||
|
|
||
| See the CHANGES file. | ||
|
|
||
| WHAT'S NEW IN 1.0.4 ? | ||
|
|
||
| See the CHANGES file. | ||
|
|
||
| WHAT'S NEW IN 1.0.5 ? | ||
|
|
||
| See the CHANGES file. | ||
|
|
||
| WHAT'S NEW IN 1.0.6 ? | ||
|
|
||
| See the CHANGES file. | ||
|
|
||
|
|
||
| I hope you find bzip2 useful. Feel free to contact me at | ||
| jseward@bzip.org | ||
| if you have any suggestions or queries. Many people mailed me with | ||
| comments, suggestions and patches after the releases of bzip-0.15, | ||
| bzip-0.21, and bzip2 versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, | ||
| 1.0.2 and 1.0.3, and the changes in bzip2 are largely a result of this | ||
| feedback. I thank you for your comments. | ||
|
|
||
| bzip2's "home" is http://www.bzip.org/ | ||
|
|
||
| Julian Seward | ||
| jseward@bzip.org | ||
| Cambridge, UK. | ||
|
|
||
| 18 July 1996 (version 0.15) | ||
| 25 August 1996 (version 0.21) | ||
| 7 August 1997 (bzip2, version 0.1) | ||
| 29 August 1997 (bzip2, version 0.1pl2) | ||
| 23 August 1998 (bzip2, version 0.9.0) | ||
| 8 June 1999 (bzip2, version 0.9.5) | ||
| 4 Sept 1999 (bzip2, version 0.9.5d) | ||
| 5 May 2000 (bzip2, version 1.0pre8) | ||
| 30 December 2001 (bzip2, version 1.0.2pre1) | ||
| 15 February 2005 (bzip2, version 1.0.3) | ||
| 20 December 2006 (bzip2, version 1.0.4) | ||
| 10 December 2007 (bzip2, version 1.0.5) | ||
| 6 Sept 2010 (bzip2, version 1.0.6) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| ------------------------------------------------------------------ | ||
| This file is part of bzip2/libbzip2, a program and library for | ||
| lossless, block-sorting data compression. | ||
|
|
||
| bzip2/libbzip2 version 1.0.6 of 6 September 2010 | ||
| Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org> | ||
|
|
||
| Please read the WARNING, DISCLAIMER and PATENTS sections in the | ||
| README file. | ||
|
|
||
| This program is released under the terms of the license contained | ||
| in the file LICENSE. | ||
| ------------------------------------------------------------------ | ||
|
|
||
| bzip2-1.0.6 should compile without problems on the vast majority of | ||
| platforms. Using the supplied Makefile, I've built and tested it | ||
| myself for x86-linux and amd64-linux. With makefile.msc, Visual C++ | ||
| 6.0 and nmake, you can build a native Win32 version too. Large file | ||
| support seems to work correctly on at least on amd64-linux. | ||
|
|
||
| When I say "large file" I mean a file of size 2,147,483,648 (2^31) | ||
| bytes or above. Many older OSs can't handle files above this size, | ||
| but many newer ones can. Large files are pretty huge -- most files | ||
| you'll encounter are not Large Files. | ||
|
|
||
| Early versions of bzip2 (0.1, 0.9.0, 0.9.5) compiled on a wide variety | ||
| of platforms without difficulty, and I hope this version will continue | ||
| in that tradition. However, in order to support large files, I've had | ||
| to include the define -D_FILE_OFFSET_BITS=64 in the Makefile. This | ||
| can cause problems. | ||
|
|
||
| The technique of adding -D_FILE_OFFSET_BITS=64 to get large file | ||
| support is, as far as I know, the Recommended Way to get correct large | ||
| file support. For more details, see the Large File Support | ||
| Specification, published by the Large File Summit, at | ||
|
|
||
| http://ftp.sas.com/standards/large.file | ||
|
|
||
| As a general comment, if you get compilation errors which you think | ||
| are related to large file support, try removing the above define from | ||
| the Makefile, ie, delete the line | ||
|
|
||
| BIGFILES=-D_FILE_OFFSET_BITS=64 | ||
|
|
||
| from the Makefile, and do 'make clean ; make'. This will give you a | ||
| version of bzip2 without large file support, which, for most | ||
| applications, is probably not a problem. | ||
|
|
||
| Alternatively, try some of the platform-specific hints listed below. | ||
|
|
||
| You can use the spewG.c program to generate huge files to test bzip2's | ||
| large file support, if you are feeling paranoid. Be aware though that | ||
| any compilation problems which affect bzip2 will also affect spewG.c, | ||
| alas. | ||
|
|
||
| AIX: I have reports that for large file support, you need to specify | ||
| -D_LARGE_FILES rather than -D_FILE_OFFSET_BITS=64. I have not tested | ||
| this myself. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,45 @@ | ||
| ---------------------------------------------------------------- | ||
| This file is part of bzip2/libbzip2, a program and library for | ||
| lossless, block-sorting data compression. | ||
|
|
||
| bzip2/libbzip2 version 1.0.6 of 6 September 2010 | ||
| Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org> | ||
|
|
||
| Please read the WARNING, DISCLAIMER and PATENTS sections in the | ||
| README file. | ||
|
|
||
| This program is released under the terms of the license contained | ||
| in the file LICENSE. | ||
| ---------------------------------------------------------------- | ||
|
|
||
| The script xmlproc.sh takes an xml file as input, | ||
| and processes it to create .pdf, .html or .ps output. | ||
| It uses format.pl, a perl script to format <pre> blocks nicely, | ||
| and add CDATA tags so writers do not have to use eg. < | ||
|
|
||
| The file "entities.xml" must be edited to reflect current | ||
| version, year, etc. | ||
|
|
||
|
|
||
| Usage: | ||
|
|
||
| ./xmlproc.sh -v manual.xml | ||
| Validates an xml file to ensure no dtd-compliance errors | ||
|
|
||
| ./xmlproc.sh -html manual.xml | ||
| Output: manual.html | ||
|
|
||
| ./xmlproc.sh -pdf manual.xml | ||
| Output: manual.pdf | ||
|
|
||
| ./xmlproc.sh -ps manual.xml | ||
| Output: manual.ps | ||
|
|
||
|
|
||
| Notum bene: | ||
| - pdfxmltex barfs if given a filename with an underscore in it | ||
|
|
||
| - xmltex won't work yet - there's a bug in passivetex | ||
| which we are all waiting for Sebastian to fix. | ||
| So we are going the xml -> pdf -> ps route for the time being, | ||
| using pdfxmltex. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,39 @@ | ||
| <?xml version="1.0"?> <!-- -*- sgml -*- --> | ||
| <xsl:stylesheet | ||
| xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> | ||
|
|
||
| <!-- we like '1.2 Title' --> | ||
| <xsl:param name="section.autolabel" select="'1'"/> | ||
| <xsl:param name="section.label.includes.component.label" select="'1'"/> | ||
|
|
||
| <!-- Do not put 'Chapter' at the start of eg 'Chapter 1. Doing This' --> | ||
| <xsl:param name="local.l10n.xml" select="document('')"/> | ||
| <l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"> | ||
| <l:l10n language="en"> | ||
| <l:context name="title-numbered"> | ||
| <l:template name="chapter" text="%n. %t"/> | ||
| </l:context> | ||
| </l:l10n> | ||
| </l:i18n> | ||
|
|
||
| <!-- don't generate sub-tocs for qanda sets --> | ||
| <xsl:param name="generate.toc"> | ||
| set toc,title | ||
| book toc,title,figure,table,example,equation | ||
| chapter toc,title | ||
| section toc | ||
| sect1 toc | ||
| sect2 toc | ||
| sect3 toc | ||
| sect4 nop | ||
| sect5 nop | ||
| qandaset toc | ||
| qandadiv nop | ||
| appendix toc,title | ||
| article/appendix nop | ||
| article toc,title | ||
| preface toc,title | ||
| reference toc,title | ||
| </xsl:param> | ||
|
|
||
| </xsl:stylesheet> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,276 @@ | ||
| <?xml version="1.0" encoding="UTF-8"?> <!-- -*- sgml -*- --> | ||
| <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | ||
| xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0"> | ||
|
|
||
| <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/> | ||
| <xsl:import href="bz-common.xsl"/> | ||
|
|
||
| <!-- set indent = yes while debugging, then change to NO --> | ||
| <xsl:output method="xml" indent="yes"/> | ||
|
|
||
| <!-- ensure only passivetex extensions are on --> | ||
| <xsl:param name="stylesheet.result.type" select="'fo'"/> | ||
| <!-- fo extensions: PDF bookmarks and index terms --> | ||
| <xsl:param name="use.extensions" select="'1'"/> | ||
| <xsl:param name="xep.extensions" select="0"/> | ||
| <xsl:param name="fop.extensions" select="0"/> | ||
| <xsl:param name="saxon.extensions" select="0"/> | ||
| <xsl:param name="passivetex.extensions" select="1"/> | ||
| <xsl:param name="tablecolumns.extension" select="'1'"/> | ||
|
|
||
| <!-- ensure we are using single sided --> | ||
| <xsl:param name="double.sided" select="'0'"/> | ||
|
|
||
| <!-- insert cross references to page numbers --> | ||
| <xsl:param name="insert.xref.page.number" select="1"/> | ||
|
|
||
| <!-- <?custom-pagebreak?> inserts a page break at this point --> | ||
| <xsl:template match="processing-instruction('custom-pagebreak')"> | ||
| <fo:block break-before='page'/> | ||
| </xsl:template> | ||
|
|
||
| <!-- show links in color --> | ||
| <xsl:attribute-set name="xref.properties"> | ||
| <xsl:attribute name="color">blue</xsl:attribute> | ||
| </xsl:attribute-set> | ||
|
|
||
| <!-- make pre listings indented a bit + a bg colour --> | ||
| <xsl:template match="programlisting | screen"> | ||
| <fo:block start-indent="0.25in" wrap-option="no-wrap" | ||
| white-space-collapse="false" text-align="start" | ||
| font-family="monospace" background-color="#f2f2f9" | ||
| linefeed-treatment="preserve" | ||
| xsl:use-attribute-sets="normal.para.spacing"> | ||
| <xsl:apply-templates/> | ||
| </fo:block> | ||
| </xsl:template> | ||
| <!-- make verbatim output prettier --> | ||
| <xsl:template match="literallayout"> | ||
| <fo:block start-indent="0.25in" wrap-option="no-wrap" | ||
| white-space-collapse="false" text-align="start" | ||
| font-family="monospace" background-color="#edf7f4" | ||
| linefeed-treatment="preserve" | ||
| space-before="0em" space-after="0em"> | ||
| <xsl:apply-templates/> | ||
| </fo:block> | ||
| </xsl:template> | ||
|
|
||
| <!-- workaround bug in passivetex fo output for itemizedlist --> | ||
| <xsl:template match="itemizedlist/listitem"> | ||
| <xsl:variable name="id"> | ||
| <xsl:call-template name="object.id"/></xsl:variable> | ||
| <xsl:variable name="itemsymbol"> | ||
| <xsl:call-template name="list.itemsymbol"> | ||
| <xsl:with-param name="node" select="parent::itemizedlist"/> | ||
| </xsl:call-template> | ||
| </xsl:variable> | ||
| <xsl:variable name="item.contents"> | ||
| <fo:list-item-label end-indent="label-end()"> | ||
| <fo:block> | ||
| <xsl:choose> | ||
| <xsl:when test="$itemsymbol='disc'">•</xsl:when> | ||
| <xsl:when test="$itemsymbol='bullet'">•</xsl:when> | ||
| <xsl:otherwise>•</xsl:otherwise> | ||
| </xsl:choose> | ||
| </fo:block> | ||
| </fo:list-item-label> | ||
| <fo:list-item-body start-indent="body-start()"> | ||
| <xsl:apply-templates/> <!-- removed extra block wrapper --> | ||
| </fo:list-item-body> | ||
| </xsl:variable> | ||
| <xsl:choose> | ||
| <xsl:when test="parent::*/@spacing = 'compact'"> | ||
| <fo:list-item id="{$id}" | ||
| xsl:use-attribute-sets="compact.list.item.spacing"> | ||
| <xsl:copy-of select="$item.contents"/> | ||
| </fo:list-item> | ||
| </xsl:when> | ||
| <xsl:otherwise> | ||
| <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> | ||
| <xsl:copy-of select="$item.contents"/> | ||
| </fo:list-item> | ||
| </xsl:otherwise> | ||
| </xsl:choose> | ||
| </xsl:template> | ||
|
|
||
| <!-- workaround bug in passivetex fo output for orderedlist --> | ||
| <xsl:template match="orderedlist/listitem"> | ||
| <xsl:variable name="id"> | ||
| <xsl:call-template name="object.id"/></xsl:variable> | ||
| <xsl:variable name="item.contents"> | ||
| <fo:list-item-label end-indent="label-end()"> | ||
| <fo:block> | ||
| <xsl:apply-templates select="." mode="item-number"/> | ||
| </fo:block> | ||
| </fo:list-item-label> | ||
| <fo:list-item-body start-indent="body-start()"> | ||
| <xsl:apply-templates/> <!-- removed extra block wrapper --> | ||
| </fo:list-item-body> | ||
| </xsl:variable> | ||
| <xsl:choose> | ||
| <xsl:when test="parent::*/@spacing = 'compact'"> | ||
| <fo:list-item id="{$id}" | ||
| xsl:use-attribute-sets="compact.list.item.spacing"> | ||
| <xsl:copy-of select="$item.contents"/> | ||
| </fo:list-item> | ||
| </xsl:when> | ||
| <xsl:otherwise> | ||
| <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> | ||
| <xsl:copy-of select="$item.contents"/> | ||
| </fo:list-item> | ||
| </xsl:otherwise> | ||
| </xsl:choose> | ||
| </xsl:template> | ||
|
|
||
| <!-- workaround bug in passivetex fo output for variablelist --> | ||
| <xsl:param name="variablelist.as.blocks" select="1"/> | ||
| <xsl:template match="varlistentry" mode="vl.as.blocks"> | ||
| <xsl:variable name="id"> | ||
| <xsl:call-template name="object.id"/></xsl:variable> | ||
| <fo:block id="{$id}" xsl:use-attribute-sets="list.item.spacing" | ||
| keep-together.within-column="always" | ||
| keep-with-next.within-column="always"> | ||
| <xsl:apply-templates select="term"/> | ||
| </fo:block> | ||
| <fo:block start-indent="0.5in" end-indent="0in" | ||
| space-after.minimum="0.2em" | ||
| space-after.optimum="0.4em" | ||
| space-after.maximum="0.6em"> | ||
| <fo:block> | ||
| <xsl:apply-templates select="listitem"/> | ||
| </fo:block> | ||
| </fo:block> | ||
| </xsl:template> | ||
|
|
||
|
|
||
| <!-- workaround bug in footers: force right-align w/two 80|30 cols --> | ||
| <xsl:template name="footer.table"> | ||
| <xsl:param name="pageclass" select="''"/> | ||
| <xsl:param name="sequence" select="''"/> | ||
| <xsl:param name="gentext-key" select="''"/> | ||
| <xsl:choose> | ||
| <xsl:when test="$pageclass = 'index'"> | ||
| <xsl:attribute name="margin-left">0pt</xsl:attribute> | ||
| </xsl:when> | ||
| </xsl:choose> | ||
| <xsl:variable name="candidate"> | ||
| <fo:table table-layout="fixed" width="100%"> | ||
| <fo:table-column column-number="1" column-width="80%"/> | ||
| <fo:table-column column-number="2" column-width="20%"/> | ||
| <fo:table-body> | ||
| <fo:table-row height="14pt"> | ||
| <fo:table-cell text-align="left" display-align="after"> | ||
| <xsl:attribute name="relative-align">baseline</xsl:attribute> | ||
| <fo:block> | ||
| <fo:block> </fo:block><!-- empty cell --> | ||
| </fo:block> | ||
| </fo:table-cell> | ||
| <fo:table-cell text-align="center" display-align="after"> | ||
| <xsl:attribute name="relative-align">baseline</xsl:attribute> | ||
| <fo:block> | ||
| <xsl:call-template name="footer.content"> | ||
| <xsl:with-param name="pageclass" select="$pageclass"/> | ||
| <xsl:with-param name="sequence" select="$sequence"/> | ||
| <xsl:with-param name="position" select="'center'"/> | ||
| <xsl:with-param name="gentext-key" select="$gentext-key"/> | ||
| </xsl:call-template> | ||
| </fo:block> | ||
| </fo:table-cell> | ||
| </fo:table-row> | ||
| </fo:table-body> | ||
| </fo:table> | ||
| </xsl:variable> | ||
| <!-- Really output a footer? --> | ||
| <xsl:choose> | ||
| <xsl:when test="$pageclass='titlepage' and $gentext-key='book' | ||
| and $sequence='first'"> | ||
| <!-- no, book titlepages have no footers at all --> | ||
| </xsl:when> | ||
| <xsl:when test="$sequence = 'blank' and $footers.on.blank.pages = 0"> | ||
| <!-- no output --> | ||
| </xsl:when> | ||
| <xsl:otherwise> | ||
| <xsl:copy-of select="$candidate"/> | ||
| </xsl:otherwise> | ||
| </xsl:choose> | ||
| </xsl:template> | ||
|
|
||
|
|
||
| <!-- fix bug in headers: force right-align w/two 40|60 cols --> | ||
| <xsl:template name="header.table"> | ||
| <xsl:param name="pageclass" select="''"/> | ||
| <xsl:param name="sequence" select="''"/> | ||
| <xsl:param name="gentext-key" select="''"/> | ||
| <xsl:choose> | ||
| <xsl:when test="$pageclass = 'index'"> | ||
| <xsl:attribute name="margin-left">0pt</xsl:attribute> | ||
| </xsl:when> | ||
| </xsl:choose> | ||
| <xsl:variable name="candidate"> | ||
| <fo:table table-layout="fixed" width="100%"> | ||
| <xsl:call-template name="head.sep.rule"> | ||
| <xsl:with-param name="pageclass" select="$pageclass"/> | ||
| <xsl:with-param name="sequence" select="$sequence"/> | ||
| <xsl:with-param name="gentext-key" select="$gentext-key"/> | ||
| </xsl:call-template> | ||
| <fo:table-column column-number="1" column-width="40%"/> | ||
| <fo:table-column column-number="2" column-width="60%"/> | ||
| <fo:table-body> | ||
| <fo:table-row height="14pt"> | ||
| <fo:table-cell text-align="left" display-align="before"> | ||
| <xsl:attribute name="relative-align">baseline</xsl:attribute> | ||
| <fo:block> | ||
| <fo:block> </fo:block><!-- empty cell --> | ||
| </fo:block> | ||
| </fo:table-cell> | ||
| <fo:table-cell text-align="center" display-align="before"> | ||
| <xsl:attribute name="relative-align">baseline</xsl:attribute> | ||
| <fo:block> | ||
| <xsl:call-template name="header.content"> | ||
| <xsl:with-param name="pageclass" select="$pageclass"/> | ||
| <xsl:with-param name="sequence" select="$sequence"/> | ||
| <xsl:with-param name="position" select="'center'"/> | ||
| <xsl:with-param name="gentext-key" select="$gentext-key"/> | ||
| </xsl:call-template> | ||
| </fo:block> | ||
| </fo:table-cell> | ||
| </fo:table-row> | ||
| </fo:table-body> | ||
| </fo:table> | ||
| </xsl:variable> | ||
| <!-- Really output a header? --> | ||
| <xsl:choose> | ||
| <xsl:when test="$pageclass = 'titlepage' and $gentext-key = 'book' | ||
| and $sequence='first'"> | ||
| <!-- no, book titlepages have no headers at all --> | ||
| </xsl:when> | ||
| <xsl:when test="$sequence = 'blank' and $headers.on.blank.pages = 0"> | ||
| <!-- no output --> | ||
| </xsl:when> | ||
| <xsl:otherwise> | ||
| <xsl:copy-of select="$candidate"/> | ||
| </xsl:otherwise> | ||
| </xsl:choose> | ||
| </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> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| <?xml version="1.0"?> <!-- -*- sgml -*- --> | ||
| <!DOCTYPE xsl:stylesheet [ <!ENTITY bz-css SYSTEM "./bzip.css"> ]> | ||
|
|
||
| <xsl:stylesheet | ||
| xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> | ||
|
|
||
| <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/> | ||
| <xsl:import href="bz-common.xsl"/> | ||
|
|
||
| <!-- use 8859-1 encoding --> | ||
| <xsl:output method="html" encoding="ISO-8859-1" indent="yes"/> | ||
|
|
||
| <!-- we include the css directly when generating one large file --> | ||
| <xsl:template name="user.head.content"> | ||
| <style type="text/css" media="screen"> | ||
| <xsl:text>&bz-css;</xsl:text> | ||
| </style> | ||
| </xsl:template> | ||
|
|
||
| </xsl:stylesheet> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,76 @@ | ||
| #!/bin/sh | ||
| # sh is buggy on RS/6000 AIX 3.2. Replace above line with #!/bin/ksh | ||
|
|
||
| # Bzcmp/diff wrapped for bzip2, | ||
| # adapted from zdiff by Philippe Troin <phil@fifi.org> for Debian GNU/Linux. | ||
|
|
||
| # Bzcmp and bzdiff are used to invoke the cmp or the diff pro- | ||
| # gram on compressed files. All options specified are passed | ||
| # directly to cmp or diff. If only 1 file is specified, then | ||
| # the files compared are file1 and an uncompressed file1.gz. | ||
| # If two files are specified, then they are uncompressed (if | ||
| # necessary) and fed to cmp or diff. The exit status from cmp | ||
| # or diff is preserved. | ||
|
|
||
| PATH="/usr/bin:/bin:$PATH"; export PATH | ||
| prog=`echo $0 | sed 's|.*/||'` | ||
| case "$prog" in | ||
| *cmp) comp=${CMP-cmp} ;; | ||
| *) comp=${DIFF-diff} ;; | ||
| esac | ||
|
|
||
| OPTIONS= | ||
| FILES= | ||
| for ARG | ||
| do | ||
| case "$ARG" in | ||
| -*) OPTIONS="$OPTIONS $ARG";; | ||
| *) if test -f "$ARG"; then | ||
| FILES="$FILES $ARG" | ||
| else | ||
| echo "${prog}: $ARG not found or not a regular file" | ||
| exit 1 | ||
| fi ;; | ||
| esac | ||
| done | ||
| if test -z "$FILES"; then | ||
| echo "Usage: $prog [${comp}_options] file [file]" | ||
| exit 1 | ||
| fi | ||
| tmp=`mktemp ${TMPDIR:-/tmp}/bzdiff.XXXXXXXXXX` || { | ||
| echo 'cannot create a temporary file' >&2 | ||
| exit 1 | ||
| } | ||
| set $FILES | ||
| if test $# -eq 1; then | ||
| FILE=`echo "$1" | sed 's/.bz2$//'` | ||
| bzip2 -cd "$FILE.bz2" | $comp $OPTIONS - "$FILE" | ||
| STAT="$?" | ||
|
|
||
| elif test $# -eq 2; then | ||
| case "$1" in | ||
| *.bz2) | ||
| case "$2" in | ||
| *.bz2) | ||
| F=`echo "$2" | sed 's|.*/||;s|.bz2$||'` | ||
| bzip2 -cdfq "$2" > $tmp | ||
| bzip2 -cdfq "$1" | $comp $OPTIONS - $tmp | ||
| STAT="$?" | ||
| /bin/rm -f $tmp;; | ||
|
|
||
| *) bzip2 -cdfq "$1" | $comp $OPTIONS - "$2" | ||
| STAT="$?";; | ||
| esac;; | ||
| *) case "$2" in | ||
| *.bz2) | ||
| bzip2 -cdfq "$2" | $comp $OPTIONS "$1" - | ||
| STAT="$?";; | ||
| *) $comp $OPTIONS "$1" "$2" | ||
| STAT="$?";; | ||
| esac;; | ||
| esac | ||
| exit "$STAT" | ||
| else | ||
| echo "Usage: $prog [${comp}_options] file [file]" | ||
| exit 1 | ||
| fi |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,47 @@ | ||
| \"Shamelessly copied from zmore.1 by Philippe Troin <phil@fifi.org> | ||
| \"for Debian GNU/Linux | ||
| .TH BZDIFF 1 | ||
| .SH NAME | ||
| bzcmp, bzdiff \- compare bzip2 compressed files | ||
| .SH SYNOPSIS | ||
| .B bzcmp | ||
| [ cmp_options ] file1 | ||
| [ file2 ] | ||
| .br | ||
| .B bzdiff | ||
| [ diff_options ] file1 | ||
| [ file2 ] | ||
| .SH DESCRIPTION | ||
| .I Bzcmp | ||
| and | ||
| .I bzdiff | ||
| are used to invoke the | ||
| .I cmp | ||
| or the | ||
| .I diff | ||
| program on bzip2 compressed files. All options specified are passed | ||
| directly to | ||
| .I cmp | ||
| or | ||
| .IR diff "." | ||
| If only 1 file is specified, then the files compared are | ||
| .I file1 | ||
| and an uncompressed | ||
| .IR file1 ".bz2." | ||
| If two files are specified, then they are uncompressed if necessary and fed to | ||
| .I cmp | ||
| or | ||
| .IR diff "." | ||
| The exit status from | ||
| .I cmp | ||
| or | ||
| .I diff | ||
| is preserved. | ||
| .SH "SEE ALSO" | ||
| cmp(1), diff(1), bzmore(1), bzless(1), bzgrep(1), bzip2(1) | ||
| .SH BUGS | ||
| Messages from the | ||
| .I cmp | ||
| or | ||
| .I diff | ||
| programs refer to temporary filenames instead of those specified. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,75 @@ | ||
| #!/bin/sh | ||
|
|
||
| # Bzgrep wrapped for bzip2, | ||
| # adapted from zgrep by Philippe Troin <phil@fifi.org> for Debian GNU/Linux. | ||
| ## zgrep notice: | ||
| ## zgrep -- a wrapper around a grep program that decompresses files as needed | ||
| ## Adapted from a version sent by Charles Levert <charles@comm.polymtl.ca> | ||
|
|
||
| PATH="/usr/bin:$PATH"; export PATH | ||
|
|
||
| prog=`echo $0 | sed 's|.*/||'` | ||
| case "$prog" in | ||
| *egrep) grep=${EGREP-egrep} ;; | ||
| *fgrep) grep=${FGREP-fgrep} ;; | ||
| *) grep=${GREP-grep} ;; | ||
| esac | ||
| pat="" | ||
| while test $# -ne 0; do | ||
| case "$1" in | ||
| -e | -f) opt="$opt $1"; shift; pat="$1" | ||
| if test "$grep" = grep; then # grep is buggy with -e on SVR4 | ||
| grep=egrep | ||
| fi;; | ||
| -A | -B) opt="$opt $1 $2"; shift;; | ||
| -*) opt="$opt $1";; | ||
| *) if test -z "$pat"; then | ||
| pat="$1" | ||
| else | ||
| break; | ||
| fi;; | ||
| esac | ||
| shift | ||
| done | ||
|
|
||
| if test -z "$pat"; then | ||
| echo "grep through bzip2 files" | ||
| echo "usage: $prog [grep_options] pattern [files]" | ||
| exit 1 | ||
| fi | ||
|
|
||
| list=0 | ||
| silent=0 | ||
| op=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'` | ||
| case "$op" in | ||
| *l*) list=1 | ||
| esac | ||
| case "$op" in | ||
| *h*) silent=1 | ||
| esac | ||
|
|
||
| if test $# -eq 0; then | ||
| bzip2 -cdfq | $grep $opt "$pat" | ||
| exit $? | ||
| fi | ||
|
|
||
| res=0 | ||
| for i do | ||
| if test -f "$i"; then :; else if test -f "$i.bz2"; then i="$i.bz2"; fi; fi | ||
| if test $list -eq 1; then | ||
| bzip2 -cdfq "$i" | $grep $opt "$pat" 2>&1 > /dev/null && echo $i | ||
| r=$? | ||
| elif test $# -eq 1 -o $silent -eq 1; then | ||
| bzip2 -cdfq "$i" | $grep $opt "$pat" | ||
| r=$? | ||
| else | ||
| j=${i//\\/\\\\} | ||
| j=${j//|/\\|} | ||
| j=${j//&/\\&} | ||
| j=`printf "%s" "$j" | tr '\n' ' '` | ||
| bzip2 -cdfq "$i" | $grep $opt "$pat" | sed "s|^|${j}:|" | ||
| r=$? | ||
| fi | ||
| test "$r" -ne 0 && res="$r" | ||
| done | ||
| exit $res |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,56 @@ | ||
| \"Shamelessly copied from zmore.1 by Philippe Troin <phil@fifi.org> | ||
| \"for Debian GNU/Linux | ||
| .TH BZGREP 1 | ||
| .SH NAME | ||
| bzgrep, bzfgrep, bzegrep \- search possibly bzip2 compressed files for a regular expression | ||
| .SH SYNOPSIS | ||
| .B bzgrep | ||
| [ grep_options ] | ||
| .BI [\ -e\ ] " pattern" | ||
| .IR filename ".\|.\|." | ||
| .br | ||
| .B bzegrep | ||
| [ egrep_options ] | ||
| .BI [\ -e\ ] " pattern" | ||
| .IR filename ".\|.\|." | ||
| .br | ||
| .B bzfgrep | ||
| [ fgrep_options ] | ||
| .BI [\ -e\ ] " pattern" | ||
| .IR filename ".\|.\|." | ||
| .SH DESCRIPTION | ||
| .IR Bzgrep | ||
| is used to invoke the | ||
| .I grep | ||
| on bzip2-compressed files. All options specified are passed directly to | ||
| .I grep. | ||
| If no file is specified, then the standard input is decompressed | ||
| if necessary and fed to grep. | ||
| Otherwise the given files are uncompressed if necessary and fed to | ||
| .I grep. | ||
| .PP | ||
| If | ||
| .I bzgrep | ||
| is invoked as | ||
| .I bzegrep | ||
| or | ||
| .I bzfgrep | ||
| then | ||
| .I egrep | ||
| or | ||
| .I fgrep | ||
| is used instead of | ||
| .I grep. | ||
| If the GREP environment variable is set, | ||
| .I bzgrep | ||
| uses it as the | ||
| .I grep | ||
| program to be invoked. For example: | ||
|
|
||
| for sh: GREP=fgrep bzgrep string files | ||
| for csh: (setenv GREP fgrep; bzgrep string files) | ||
| .SH AUTHOR | ||
| Charles Levert (charles@comm.polymtl.ca). Adapted to bzip2 by Philippe | ||
| Troin <phil@fifi.org> for Debian GNU/Linux. | ||
| .SH "SEE ALSO" | ||
| grep(1), egrep(1), fgrep(1), bzdiff(1), bzmore(1), bzless(1), bzip2(1) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,74 @@ | ||
| /* Colours: | ||
| #74240f dark brown h1, h2, h3, h4 | ||
| #336699 medium blue links | ||
| #339999 turquoise link hover colour | ||
| #202020 almost black general text | ||
| #761596 purple md5sum text | ||
| #626262 dark gray pre border | ||
| #eeeeee very light gray pre background | ||
| #f2f2f9 very light blue nav table background | ||
| #3366cc medium blue nav table border | ||
| */ | ||
|
|
||
| a, a:link, a:visited, a:active { color: #336699; } | ||
| a:hover { color: #339999; } | ||
|
|
||
| body { font: 80%/126% sans-serif; } | ||
| h1, h2, h3, h4 { color: #74240f; } | ||
|
|
||
| dt { color: #336699; font-weight: bold } | ||
| dd { | ||
| margin-left: 1.5em; | ||
| padding-bottom: 0.8em; | ||
| } | ||
|
|
||
| /* -- ruler -- */ | ||
| div.hr_blue { | ||
| height: 3px; | ||
| background:#ffffff url("/images/hr_blue.png") repeat-x; } | ||
| div.hr_blue hr { display:none; } | ||
|
|
||
| /* release styles */ | ||
| #release p { margin-top: 0.4em; } | ||
| #release .md5sum { color: #761596; } | ||
|
|
||
|
|
||
| /* ------ styles for docs|manuals|howto ------ */ | ||
| /* -- lists -- */ | ||
| ul { | ||
| margin: 0px 4px 16px 16px; | ||
| padding: 0px; | ||
| list-style: url("/images/li-blue.png"); | ||
| } | ||
| ul li { | ||
| margin-bottom: 10px; | ||
| } | ||
| ul ul { | ||
| list-style-type: none; | ||
| list-style-image: none; | ||
| margin-left: 0px; | ||
| } | ||
|
|
||
| /* header / footer nav tables */ | ||
| table.nav { | ||
| border: solid 1px #3366cc; | ||
| background: #f2f2f9; | ||
| background-color: #f2f2f9; | ||
| margin-bottom: 0.5em; | ||
| } | ||
| /* don't have underlined links in chunked nav menus */ | ||
| table.nav a { text-decoration: none; } | ||
| table.nav a:hover { text-decoration: underline; } | ||
| table.nav td { font-size: 85%; } | ||
|
|
||
| code, tt, pre { font-size: 120%; } | ||
| code, tt { color: #761596; } | ||
|
|
||
| div.literallayout, pre.programlisting, pre.screen { | ||
| color: #000000; | ||
| padding: 0.5em; | ||
| background: #eeeeee; | ||
| border: 1px solid #626262; | ||
| background-color: #eeeeee; | ||
| margin: 4px 0px 4px 0px; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,282 @@ | ||
|
|
||
| /*-------------------------------------------------------------*/ | ||
| /*--- Public header file for the library. ---*/ | ||
| /*--- bzlib.h ---*/ | ||
| /*-------------------------------------------------------------*/ | ||
|
|
||
| /* ------------------------------------------------------------------ | ||
| This file is part of bzip2/libbzip2, a program and library for | ||
| lossless, block-sorting data compression. | ||
| bzip2/libbzip2 version 1.0.6 of 6 September 2010 | ||
| Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org> | ||
| Please read the WARNING, DISCLAIMER and PATENTS sections in the | ||
| README file. | ||
| This program is released under the terms of the license contained | ||
| in the file LICENSE. | ||
| ------------------------------------------------------------------ */ | ||
|
|
||
|
|
||
| #ifndef _BZLIB_H | ||
| #define _BZLIB_H | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| #define BZ_RUN 0 | ||
| #define BZ_FLUSH 1 | ||
| #define BZ_FINISH 2 | ||
|
|
||
| #define BZ_OK 0 | ||
| #define BZ_RUN_OK 1 | ||
| #define BZ_FLUSH_OK 2 | ||
| #define BZ_FINISH_OK 3 | ||
| #define BZ_STREAM_END 4 | ||
| #define BZ_SEQUENCE_ERROR (-1) | ||
| #define BZ_PARAM_ERROR (-2) | ||
| #define BZ_MEM_ERROR (-3) | ||
| #define BZ_DATA_ERROR (-4) | ||
| #define BZ_DATA_ERROR_MAGIC (-5) | ||
| #define BZ_IO_ERROR (-6) | ||
| #define BZ_UNEXPECTED_EOF (-7) | ||
| #define BZ_OUTBUFF_FULL (-8) | ||
| #define BZ_CONFIG_ERROR (-9) | ||
|
|
||
| typedef | ||
| struct { | ||
| char *next_in; | ||
| unsigned int avail_in; | ||
| unsigned int total_in_lo32; | ||
| unsigned int total_in_hi32; | ||
|
|
||
| char *next_out; | ||
| unsigned int avail_out; | ||
| unsigned int total_out_lo32; | ||
| unsigned int total_out_hi32; | ||
|
|
||
| void *state; | ||
|
|
||
| void *(*bzalloc)(void *,int,int); | ||
| void (*bzfree)(void *,void *); | ||
| void *opaque; | ||
| } | ||
| bz_stream; | ||
|
|
||
|
|
||
| #ifndef BZ_IMPORT | ||
| #define BZ_EXPORT | ||
| #endif | ||
|
|
||
| #ifndef BZ_NO_STDIO | ||
| /* Need a definitition for FILE */ | ||
| #include <stdio.h> | ||
| #endif | ||
|
|
||
| #ifdef _WIN32 | ||
| # include <windows.h> | ||
| # ifdef small | ||
| /* windows.h define small to char */ | ||
| # undef small | ||
| # endif | ||
| # ifdef BZ_EXPORT | ||
| # define BZ_API(func) WINAPI func | ||
| # define BZ_EXTERN extern | ||
| # else | ||
| /* import windows dll dynamically */ | ||
| # define BZ_API(func) (WINAPI * func) | ||
| # define BZ_EXTERN | ||
| # endif | ||
| #else | ||
| # define BZ_API(func) func | ||
| # define BZ_EXTERN extern | ||
| #endif | ||
|
|
||
|
|
||
| /*-- Core (low-level) library functions --*/ | ||
|
|
||
| BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( | ||
| bz_stream* strm, | ||
| int blockSize100k, | ||
| int verbosity, | ||
| int workFactor | ||
| ); | ||
|
|
||
| BZ_EXTERN int BZ_API(BZ2_bzCompress) ( | ||
| bz_stream* strm, | ||
| int action | ||
| ); | ||
|
|
||
| BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( | ||
| bz_stream* strm | ||
| ); | ||
|
|
||
| BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( | ||
| bz_stream *strm, | ||
| int verbosity, | ||
| int small | ||
| ); | ||
|
|
||
| BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( | ||
| bz_stream* strm | ||
| ); | ||
|
|
||
| BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( | ||
| bz_stream *strm | ||
| ); | ||
|
|
||
|
|
||
|
|
||
| /*-- High(er) level library functions --*/ | ||
|
|
||
| #ifndef BZ_NO_STDIO | ||
| #define BZ_MAX_UNUSED 5000 | ||
|
|
||
| typedef void BZFILE; | ||
|
|
||
| BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( | ||
| int* bzerror, | ||
| FILE* f, | ||
| int verbosity, | ||
| int small, | ||
| void* unused, | ||
| int nUnused | ||
| ); | ||
|
|
||
| BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( | ||
| int* bzerror, | ||
| BZFILE* b | ||
| ); | ||
|
|
||
| BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( | ||
| int* bzerror, | ||
| BZFILE* b, | ||
| void** unused, | ||
| int* nUnused | ||
| ); | ||
|
|
||
| BZ_EXTERN int BZ_API(BZ2_bzRead) ( | ||
| int* bzerror, | ||
| BZFILE* b, | ||
| void* buf, | ||
| int len | ||
| ); | ||
|
|
||
| BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( | ||
| int* bzerror, | ||
| FILE* f, | ||
| int blockSize100k, | ||
| int verbosity, | ||
| int workFactor | ||
| ); | ||
|
|
||
| BZ_EXTERN void BZ_API(BZ2_bzWrite) ( | ||
| int* bzerror, | ||
| BZFILE* b, | ||
| void* buf, | ||
| int len | ||
| ); | ||
|
|
||
| BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( | ||
| int* bzerror, | ||
| BZFILE* b, | ||
| int abandon, | ||
| unsigned int* nbytes_in, | ||
| unsigned int* nbytes_out | ||
| ); | ||
|
|
||
| BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( | ||
| int* bzerror, | ||
| BZFILE* b, | ||
| int abandon, | ||
| unsigned int* nbytes_in_lo32, | ||
| unsigned int* nbytes_in_hi32, | ||
| unsigned int* nbytes_out_lo32, | ||
| unsigned int* nbytes_out_hi32 | ||
| ); | ||
| #endif | ||
|
|
||
|
|
||
| /*-- Utility functions --*/ | ||
|
|
||
| BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( | ||
| char* dest, | ||
| unsigned int* destLen, | ||
| char* source, | ||
| unsigned int sourceLen, | ||
| int blockSize100k, | ||
| int verbosity, | ||
| int workFactor | ||
| ); | ||
|
|
||
| BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( | ||
| char* dest, | ||
| unsigned int* destLen, | ||
| char* source, | ||
| unsigned int sourceLen, | ||
| int small, | ||
| int verbosity | ||
| ); | ||
|
|
||
|
|
||
| /*-- | ||
| Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) | ||
| to support better zlib compatibility. | ||
| This code is not _officially_ part of libbzip2 (yet); | ||
| I haven't tested it, documented it, or considered the | ||
| threading-safeness of it. | ||
| If this code breaks, please contact both Yoshioka and me. | ||
| --*/ | ||
|
|
||
| BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( | ||
| void | ||
| ); | ||
|
|
||
| #ifndef BZ_NO_STDIO | ||
| BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( | ||
| const char *path, | ||
| const char *mode | ||
| ); | ||
|
|
||
| BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( | ||
| int fd, | ||
| const char *mode | ||
| ); | ||
|
|
||
| BZ_EXTERN int BZ_API(BZ2_bzread) ( | ||
| BZFILE* b, | ||
| void* buf, | ||
| int len | ||
| ); | ||
|
|
||
| BZ_EXTERN int BZ_API(BZ2_bzwrite) ( | ||
| BZFILE* b, | ||
| void* buf, | ||
| int len | ||
| ); | ||
|
|
||
| BZ_EXTERN int BZ_API(BZ2_bzflush) ( | ||
| BZFILE* b | ||
| ); | ||
|
|
||
| BZ_EXTERN void BZ_API(BZ2_bzclose) ( | ||
| BZFILE* b | ||
| ); | ||
|
|
||
| BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( | ||
| BZFILE *b, | ||
| int *errnum | ||
| ); | ||
| #endif | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
| #endif | ||
|
|
||
| /*-------------------------------------------------------------*/ | ||
| /*--- end bzlib.h ---*/ | ||
| /*-------------------------------------------------------------*/ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,61 @@ | ||
| #!/bin/sh | ||
|
|
||
| # Bzmore wrapped for bzip2, | ||
| # adapted from zmore by Philippe Troin <phil@fifi.org> for Debian GNU/Linux. | ||
|
|
||
| PATH="/usr/bin:$PATH"; export PATH | ||
|
|
||
| prog=`echo $0 | sed 's|.*/||'` | ||
| case "$prog" in | ||
| *less) more=less ;; | ||
| *) more=more ;; | ||
| esac | ||
|
|
||
| if test "`echo -n a`" = "-n a"; then | ||
| # looks like a SysV system: | ||
| n1=''; n2='\c' | ||
| else | ||
| n1='-n'; n2='' | ||
| fi | ||
| oldtty=`stty -g 2>/dev/null` | ||
| if stty -cbreak 2>/dev/null; then | ||
| cb='cbreak'; ncb='-cbreak' | ||
| else | ||
| # 'stty min 1' resets eof to ^a on both SunOS and SysV! | ||
| cb='min 1 -icanon'; ncb='icanon eof ^d' | ||
| fi | ||
| if test $? -eq 0 -a -n "$oldtty"; then | ||
| trap 'stty $oldtty 2>/dev/null; exit' 0 2 3 5 10 13 15 | ||
| else | ||
| trap 'stty $ncb echo 2>/dev/null; exit' 0 2 3 5 10 13 15 | ||
| fi | ||
|
|
||
| if test $# = 0; then | ||
| if test -t 0; then | ||
| echo usage: $prog files... | ||
| else | ||
| bzip2 -cdfq | eval $more | ||
| fi | ||
| else | ||
| FIRST=1 | ||
| for FILE | ||
| do | ||
| if test $FIRST -eq 0; then | ||
| echo $n1 "--More--(Next file: $FILE)$n2" | ||
| stty $cb -echo 2>/dev/null | ||
| ANS=`dd bs=1 count=1 2>/dev/null` | ||
| stty $ncb echo 2>/dev/null | ||
| echo " " | ||
| if test "$ANS" = 'e' -o "$ANS" = 'q'; then | ||
| exit | ||
| fi | ||
| fi | ||
| if test "$ANS" != 's'; then | ||
| echo "------> $FILE <------" | ||
| bzip2 -cdfq "$FILE" | eval $more | ||
| fi | ||
| if test -t; then | ||
| FIRST=0 | ||
| fi | ||
| done | ||
| fi |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,152 @@ | ||
| .\"Shamelessly copied from zmore.1 by Philippe Troin <phil@fifi.org> | ||
| .\"for Debian GNU/Linux | ||
| .TH BZMORE 1 | ||
| .SH NAME | ||
| bzmore, bzless \- file perusal filter for crt viewing of bzip2 compressed text | ||
| .SH SYNOPSIS | ||
| .B bzmore | ||
| [ name ... ] | ||
| .br | ||
| .B bzless | ||
| [ name ... ] | ||
| .SH NOTE | ||
| In the following description, | ||
| .I bzless | ||
| and | ||
| .I less | ||
| can be used interchangeably with | ||
| .I bzmore | ||
| and | ||
| .I more. | ||
| .SH DESCRIPTION | ||
| .I Bzmore | ||
| is a filter which allows examination of compressed or plain text files | ||
| one screenful at a time on a soft-copy terminal. | ||
| .I bzmore | ||
| works on files compressed with | ||
| .I bzip2 | ||
| and also on uncompressed files. | ||
| If a file does not exist, | ||
| .I bzmore | ||
| looks for a file of the same name with the addition of a .bz2 suffix. | ||
| .PP | ||
| .I Bzmore | ||
| normally pauses after each screenful, printing --More-- | ||
| at the bottom of the screen. | ||
| If the user then types a carriage return, one more line is displayed. | ||
| If the user hits a space, | ||
| another screenful is displayed. Other possibilities are enumerated later. | ||
| .PP | ||
| .I Bzmore | ||
| looks in the file | ||
| .I /etc/termcap | ||
| to determine terminal characteristics, | ||
| and to determine the default window size. | ||
| On a terminal capable of displaying 24 lines, | ||
| the default window size is 22 lines. | ||
| Other sequences which may be typed when | ||
| .I bzmore | ||
| pauses, and their effects, are as follows (\fIi\fP is an optional integer | ||
| argument, defaulting to 1) : | ||
| .PP | ||
| .IP \fIi\|\fP<space> | ||
| display | ||
| .I i | ||
| more lines, (or another screenful if no argument is given) | ||
| .PP | ||
| .IP ^D | ||
| display 11 more lines (a ``scroll''). | ||
| If | ||
| .I i | ||
| is given, then the scroll size is set to \fIi\|\fP. | ||
| .PP | ||
| .IP d | ||
| same as ^D (control-D) | ||
| .PP | ||
| .IP \fIi\|\fPz | ||
| same as typing a space except that \fIi\|\fP, if present, becomes the new | ||
| window size. Note that the window size reverts back to the default at the | ||
| end of the current file. | ||
| .PP | ||
| .IP \fIi\|\fPs | ||
| skip \fIi\|\fP lines and print a screenful of lines | ||
| .PP | ||
| .IP \fIi\|\fPf | ||
| skip \fIi\fP screenfuls and print a screenful of lines | ||
| .PP | ||
| .IP "q or Q" | ||
| quit reading the current file; go on to the next (if any) | ||
| .PP | ||
| .IP "e or q" | ||
| When the prompt --More--(Next file: | ||
| .IR file ) | ||
| is printed, this command causes bzmore to exit. | ||
| .PP | ||
| .IP s | ||
| When the prompt --More--(Next file: | ||
| .IR file ) | ||
| is printed, this command causes bzmore to skip the next file and continue. | ||
| .PP | ||
| .IP = | ||
| Display the current line number. | ||
| .PP | ||
| .IP \fIi\|\fP/expr | ||
| search for the \fIi\|\fP-th occurrence of the regular expression \fIexpr.\fP | ||
| If the pattern is not found, | ||
| .I bzmore | ||
| goes on to the next file (if any). | ||
| Otherwise, a screenful is displayed, starting two lines before the place | ||
| where the expression was found. | ||
| The user's erase and kill characters may be used to edit the regular | ||
| expression. | ||
| Erasing back past the first column cancels the search command. | ||
| .PP | ||
| .IP \fIi\|\fPn | ||
| search for the \fIi\|\fP-th occurrence of the last regular expression entered. | ||
| .PP | ||
| .IP !command | ||
| invoke a shell with \fIcommand\|\fP. | ||
| The character `!' in "command" are replaced with the | ||
| previous shell command. The sequence "\\!" is replaced by "!". | ||
| .PP | ||
| .IP ":q or :Q" | ||
| quit reading the current file; go on to the next (if any) | ||
| (same as q or Q). | ||
| .PP | ||
| .IP . | ||
| (dot) repeat the previous command. | ||
| .PP | ||
| The commands take effect immediately, i.e., it is not necessary to | ||
| type a carriage return. | ||
| Up to the time when the command character itself is given, | ||
| the user may hit the line kill character to cancel the numerical | ||
| argument being formed. | ||
| In addition, the user may hit the erase character to redisplay the | ||
| --More-- message. | ||
| .PP | ||
| At any time when output is being sent to the terminal, the user can | ||
| hit the quit key (normally control\-\\). | ||
| .I Bzmore | ||
| will stop sending output, and will display the usual --More-- | ||
| prompt. | ||
| The user may then enter one of the above commands in the normal manner. | ||
| Unfortunately, some output is lost when this is done, due to the | ||
| fact that any characters waiting in the terminal's output queue | ||
| are flushed when the quit signal occurs. | ||
| .PP | ||
| The terminal is set to | ||
| .I noecho | ||
| mode by this program so that the output can be continuous. | ||
| What you type will thus not show on your terminal, except for the / and ! | ||
| commands. | ||
| .PP | ||
| If the standard output is not a teletype, then | ||
| .I bzmore | ||
| acts just like | ||
| .I bzcat, | ||
| except that a header is printed before each file. | ||
| .SH FILES | ||
| .DT | ||
| /etc/termcap Terminal data base | ||
| .SH "SEE ALSO" | ||
| more(1), less(1), bzip2(1), bzdiff(1), bzgrep(1) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,104 @@ | ||
|
|
||
| /*-------------------------------------------------------------*/ | ||
| /*--- Table for doing CRCs ---*/ | ||
| /*--- crctable.c ---*/ | ||
| /*-------------------------------------------------------------*/ | ||
|
|
||
| /* ------------------------------------------------------------------ | ||
| This file is part of bzip2/libbzip2, a program and library for | ||
| lossless, block-sorting data compression. | ||
| bzip2/libbzip2 version 1.0.6 of 6 September 2010 | ||
| Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org> | ||
| Please read the WARNING, DISCLAIMER and PATENTS sections in the | ||
| README file. | ||
| This program is released under the terms of the license contained | ||
| in the file LICENSE. | ||
| ------------------------------------------------------------------ */ | ||
|
|
||
|
|
||
| #include "bzlib_private.h" | ||
|
|
||
| /*-- | ||
| I think this is an implementation of the AUTODIN-II, | ||
| Ethernet & FDDI 32-bit CRC standard. Vaguely derived | ||
| from code by Rob Warnock, in Section 51 of the | ||
| comp.compression FAQ. | ||
| --*/ | ||
|
|
||
| UInt32 BZ2_crc32Table[256] = { | ||
|
|
||
| /*-- Ugly, innit? --*/ | ||
|
|
||
| 0x00000000L, 0x04c11db7L, 0x09823b6eL, 0x0d4326d9L, | ||
| 0x130476dcL, 0x17c56b6bL, 0x1a864db2L, 0x1e475005L, | ||
| 0x2608edb8L, 0x22c9f00fL, 0x2f8ad6d6L, 0x2b4bcb61L, | ||
| 0x350c9b64L, 0x31cd86d3L, 0x3c8ea00aL, 0x384fbdbdL, | ||
| 0x4c11db70L, 0x48d0c6c7L, 0x4593e01eL, 0x4152fda9L, | ||
| 0x5f15adacL, 0x5bd4b01bL, 0x569796c2L, 0x52568b75L, | ||
| 0x6a1936c8L, 0x6ed82b7fL, 0x639b0da6L, 0x675a1011L, | ||
| 0x791d4014L, 0x7ddc5da3L, 0x709f7b7aL, 0x745e66cdL, | ||
| 0x9823b6e0L, 0x9ce2ab57L, 0x91a18d8eL, 0x95609039L, | ||
| 0x8b27c03cL, 0x8fe6dd8bL, 0x82a5fb52L, 0x8664e6e5L, | ||
| 0xbe2b5b58L, 0xbaea46efL, 0xb7a96036L, 0xb3687d81L, | ||
| 0xad2f2d84L, 0xa9ee3033L, 0xa4ad16eaL, 0xa06c0b5dL, | ||
| 0xd4326d90L, 0xd0f37027L, 0xddb056feL, 0xd9714b49L, | ||
| 0xc7361b4cL, 0xc3f706fbL, 0xceb42022L, 0xca753d95L, | ||
| 0xf23a8028L, 0xf6fb9d9fL, 0xfbb8bb46L, 0xff79a6f1L, | ||
| 0xe13ef6f4L, 0xe5ffeb43L, 0xe8bccd9aL, 0xec7dd02dL, | ||
| 0x34867077L, 0x30476dc0L, 0x3d044b19L, 0x39c556aeL, | ||
| 0x278206abL, 0x23431b1cL, 0x2e003dc5L, 0x2ac12072L, | ||
| 0x128e9dcfL, 0x164f8078L, 0x1b0ca6a1L, 0x1fcdbb16L, | ||
| 0x018aeb13L, 0x054bf6a4L, 0x0808d07dL, 0x0cc9cdcaL, | ||
| 0x7897ab07L, 0x7c56b6b0L, 0x71159069L, 0x75d48ddeL, | ||
| 0x6b93dddbL, 0x6f52c06cL, 0x6211e6b5L, 0x66d0fb02L, | ||
| 0x5e9f46bfL, 0x5a5e5b08L, 0x571d7dd1L, 0x53dc6066L, | ||
| 0x4d9b3063L, 0x495a2dd4L, 0x44190b0dL, 0x40d816baL, | ||
| 0xaca5c697L, 0xa864db20L, 0xa527fdf9L, 0xa1e6e04eL, | ||
| 0xbfa1b04bL, 0xbb60adfcL, 0xb6238b25L, 0xb2e29692L, | ||
| 0x8aad2b2fL, 0x8e6c3698L, 0x832f1041L, 0x87ee0df6L, | ||
| 0x99a95df3L, 0x9d684044L, 0x902b669dL, 0x94ea7b2aL, | ||
| 0xe0b41de7L, 0xe4750050L, 0xe9362689L, 0xedf73b3eL, | ||
| 0xf3b06b3bL, 0xf771768cL, 0xfa325055L, 0xfef34de2L, | ||
| 0xc6bcf05fL, 0xc27dede8L, 0xcf3ecb31L, 0xcbffd686L, | ||
| 0xd5b88683L, 0xd1799b34L, 0xdc3abdedL, 0xd8fba05aL, | ||
| 0x690ce0eeL, 0x6dcdfd59L, 0x608edb80L, 0x644fc637L, | ||
| 0x7a089632L, 0x7ec98b85L, 0x738aad5cL, 0x774bb0ebL, | ||
| 0x4f040d56L, 0x4bc510e1L, 0x46863638L, 0x42472b8fL, | ||
| 0x5c007b8aL, 0x58c1663dL, 0x558240e4L, 0x51435d53L, | ||
| 0x251d3b9eL, 0x21dc2629L, 0x2c9f00f0L, 0x285e1d47L, | ||
| 0x36194d42L, 0x32d850f5L, 0x3f9b762cL, 0x3b5a6b9bL, | ||
| 0x0315d626L, 0x07d4cb91L, 0x0a97ed48L, 0x0e56f0ffL, | ||
| 0x1011a0faL, 0x14d0bd4dL, 0x19939b94L, 0x1d528623L, | ||
| 0xf12f560eL, 0xf5ee4bb9L, 0xf8ad6d60L, 0xfc6c70d7L, | ||
| 0xe22b20d2L, 0xe6ea3d65L, 0xeba91bbcL, 0xef68060bL, | ||
| 0xd727bbb6L, 0xd3e6a601L, 0xdea580d8L, 0xda649d6fL, | ||
| 0xc423cd6aL, 0xc0e2d0ddL, 0xcda1f604L, 0xc960ebb3L, | ||
| 0xbd3e8d7eL, 0xb9ff90c9L, 0xb4bcb610L, 0xb07daba7L, | ||
| 0xae3afba2L, 0xaafbe615L, 0xa7b8c0ccL, 0xa379dd7bL, | ||
| 0x9b3660c6L, 0x9ff77d71L, 0x92b45ba8L, 0x9675461fL, | ||
| 0x8832161aL, 0x8cf30badL, 0x81b02d74L, 0x857130c3L, | ||
| 0x5d8a9099L, 0x594b8d2eL, 0x5408abf7L, 0x50c9b640L, | ||
| 0x4e8ee645L, 0x4a4ffbf2L, 0x470cdd2bL, 0x43cdc09cL, | ||
| 0x7b827d21L, 0x7f436096L, 0x7200464fL, 0x76c15bf8L, | ||
| 0x68860bfdL, 0x6c47164aL, 0x61043093L, 0x65c52d24L, | ||
| 0x119b4be9L, 0x155a565eL, 0x18197087L, 0x1cd86d30L, | ||
| 0x029f3d35L, 0x065e2082L, 0x0b1d065bL, 0x0fdc1becL, | ||
| 0x3793a651L, 0x3352bbe6L, 0x3e119d3fL, 0x3ad08088L, | ||
| 0x2497d08dL, 0x2056cd3aL, 0x2d15ebe3L, 0x29d4f654L, | ||
| 0xc5a92679L, 0xc1683bceL, 0xcc2b1d17L, 0xc8ea00a0L, | ||
| 0xd6ad50a5L, 0xd26c4d12L, 0xdf2f6bcbL, 0xdbee767cL, | ||
| 0xe3a1cbc1L, 0xe760d676L, 0xea23f0afL, 0xeee2ed18L, | ||
| 0xf0a5bd1dL, 0xf464a0aaL, 0xf9278673L, 0xfde69bc4L, | ||
| 0x89b8fd09L, 0x8d79e0beL, 0x803ac667L, 0x84fbdbd0L, | ||
| 0x9abc8bd5L, 0x9e7d9662L, 0x933eb0bbL, 0x97ffad0cL, | ||
| 0xafb010b1L, 0xab710d06L, 0xa6322bdfL, 0xa2f33668L, | ||
| 0xbcb4666dL, 0xb8757bdaL, 0xb5365d03L, 0xb1f740b4L | ||
| }; | ||
|
|
||
|
|
||
| /*-------------------------------------------------------------*/ | ||
| /*--- end crctable.c ---*/ | ||
| /*-------------------------------------------------------------*/ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,175 @@ | ||
| /* | ||
| minibz2 | ||
| libbz2.dll test program. | ||
| by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) | ||
| This file is Public Domain. Welcome any email to me. | ||
| usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename] | ||
| */ | ||
|
|
||
| #define BZ_IMPORT | ||
| #include <stdio.h> | ||
| #include <stdlib.h> | ||
| #include "bzlib.h" | ||
| #ifdef _WIN32 | ||
| #include <io.h> | ||
| #endif | ||
|
|
||
|
|
||
| #ifdef _WIN32 | ||
|
|
||
| #define BZ2_LIBNAME "libbz2-1.0.2.DLL" | ||
|
|
||
| #include <windows.h> | ||
| static int BZ2DLLLoaded = 0; | ||
| static HINSTANCE BZ2DLLhLib; | ||
| int BZ2DLLLoadLibrary(void) | ||
| { | ||
| HINSTANCE hLib; | ||
|
|
||
| if(BZ2DLLLoaded==1){return 0;} | ||
| hLib=LoadLibrary(BZ2_LIBNAME); | ||
| if(hLib == NULL){ | ||
| fprintf(stderr,"Can't load %s\n",BZ2_LIBNAME); | ||
| return -1; | ||
| } | ||
| BZ2_bzlibVersion=GetProcAddress(hLib,"BZ2_bzlibVersion"); | ||
| BZ2_bzopen=GetProcAddress(hLib,"BZ2_bzopen"); | ||
| BZ2_bzdopen=GetProcAddress(hLib,"BZ2_bzdopen"); | ||
| BZ2_bzread=GetProcAddress(hLib,"BZ2_bzread"); | ||
| BZ2_bzwrite=GetProcAddress(hLib,"BZ2_bzwrite"); | ||
| BZ2_bzflush=GetProcAddress(hLib,"BZ2_bzflush"); | ||
| BZ2_bzclose=GetProcAddress(hLib,"BZ2_bzclose"); | ||
| BZ2_bzerror=GetProcAddress(hLib,"BZ2_bzerror"); | ||
|
|
||
| if (!BZ2_bzlibVersion || !BZ2_bzopen || !BZ2_bzdopen | ||
| || !BZ2_bzread || !BZ2_bzwrite || !BZ2_bzflush | ||
| || !BZ2_bzclose || !BZ2_bzerror) { | ||
| fprintf(stderr,"GetProcAddress failed.\n"); | ||
| return -1; | ||
| } | ||
| BZ2DLLLoaded=1; | ||
| BZ2DLLhLib=hLib; | ||
| return 0; | ||
|
|
||
| } | ||
| int BZ2DLLFreeLibrary(void) | ||
| { | ||
| if(BZ2DLLLoaded==0){return 0;} | ||
| FreeLibrary(BZ2DLLhLib); | ||
| BZ2DLLLoaded=0; | ||
| } | ||
| #endif /* WIN32 */ | ||
|
|
||
| void usage(void) | ||
| { | ||
| puts("usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]"); | ||
| } | ||
|
|
||
| int main(int argc,char *argv[]) | ||
| { | ||
| int decompress = 0; | ||
| int level = 9; | ||
| char *fn_r = NULL; | ||
| char *fn_w = NULL; | ||
|
|
||
| #ifdef _WIN32 | ||
| if(BZ2DLLLoadLibrary()<0){ | ||
| fprintf(stderr,"Loading of %s failed. Giving up.\n", BZ2_LIBNAME); | ||
| exit(1); | ||
| } | ||
| printf("Loading of %s succeeded. Library version is %s.\n", | ||
| BZ2_LIBNAME, BZ2_bzlibVersion() ); | ||
| #endif | ||
| while(++argv,--argc){ | ||
| if(**argv =='-' || **argv=='/'){ | ||
| char *p; | ||
|
|
||
| for(p=*argv+1;*p;p++){ | ||
| if(*p=='d'){ | ||
| decompress = 1; | ||
| }else if('1'<=*p && *p<='9'){ | ||
| level = *p - '0'; | ||
| }else{ | ||
| usage(); | ||
| exit(1); | ||
| } | ||
| } | ||
| }else{ | ||
| break; | ||
| } | ||
| } | ||
| if(argc>=1){ | ||
| fn_r = *argv; | ||
| argc--;argv++; | ||
| }else{ | ||
| fn_r = NULL; | ||
| } | ||
| if(argc>=1){ | ||
| fn_w = *argv; | ||
| argc--;argv++; | ||
| }else{ | ||
| fn_w = NULL; | ||
| } | ||
| { | ||
| int len; | ||
| char buff[0x1000]; | ||
| char mode[10]; | ||
|
|
||
| if(decompress){ | ||
| BZFILE *BZ2fp_r = NULL; | ||
| FILE *fp_w = NULL; | ||
|
|
||
| if(fn_w){ | ||
| if((fp_w = fopen(fn_w,"wb"))==NULL){ | ||
| printf("can't open [%s]\n",fn_w); | ||
| perror("reason:"); | ||
| exit(1); | ||
| } | ||
| }else{ | ||
| fp_w = stdout; | ||
| } | ||
| if((fn_r == NULL && (BZ2fp_r = BZ2_bzdopen(fileno(stdin),"rb"))==NULL) | ||
| || (fn_r != NULL && (BZ2fp_r = BZ2_bzopen(fn_r,"rb"))==NULL)){ | ||
| printf("can't bz2openstream\n"); | ||
| exit(1); | ||
| } | ||
| while((len=BZ2_bzread(BZ2fp_r,buff,0x1000))>0){ | ||
| fwrite(buff,1,len,fp_w); | ||
| } | ||
| BZ2_bzclose(BZ2fp_r); | ||
| if(fp_w != stdout) fclose(fp_w); | ||
| }else{ | ||
| BZFILE *BZ2fp_w = NULL; | ||
| FILE *fp_r = NULL; | ||
|
|
||
| if(fn_r){ | ||
| if((fp_r = fopen(fn_r,"rb"))==NULL){ | ||
| printf("can't open [%s]\n",fn_r); | ||
| perror("reason:"); | ||
| exit(1); | ||
| } | ||
| }else{ | ||
| fp_r = stdin; | ||
| } | ||
| mode[0]='w'; | ||
| mode[1] = '0' + level; | ||
| mode[2] = '\0'; | ||
|
|
||
| if((fn_w == NULL && (BZ2fp_w = BZ2_bzdopen(fileno(stdout),mode))==NULL) | ||
| || (fn_w !=NULL && (BZ2fp_w = BZ2_bzopen(fn_w,mode))==NULL)){ | ||
| printf("can't bz2openstream\n"); | ||
| exit(1); | ||
| } | ||
| while((len=fread(buff,1,0x1000,fp_r))>0){ | ||
| BZ2_bzwrite(BZ2fp_w,buff,len); | ||
| } | ||
| BZ2_bzclose(BZ2fp_w); | ||
| if(fp_r!=stdin)fclose(fp_r); | ||
| } | ||
| } | ||
| #ifdef _WIN32 | ||
| BZ2DLLFreeLibrary(); | ||
| #endif | ||
| return 0; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| <!-- misc. strings --> | ||
| <!ENTITY bz-url "http://www.bzip.org"> | ||
| <!ENTITY bz-email "jseward@bzip.org"> | ||
| <!ENTITY bz-lifespan "1996-2010"> | ||
|
|
||
| <!ENTITY bz-version "1.0.6"> | ||
| <!ENTITY bz-date "6 September 2010"> | ||
|
|
||
| <!ENTITY manual-title "bzip2 Manual"> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,68 @@ | ||
| #!/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.6 of 6 September 2010 | ||
| # Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org> | ||
| # | ||
| # Please read the WARNING, DISCLAIMER and PATENTS sections in the | ||
| # README file. | ||
| # | ||
| # This program is released under the terms of the license contained | ||
| # in the file LICENSE. | ||
| # ------------------------------------------------------------------ | ||
| # | ||
| use strict; | ||
|
|
||
| # get command line values: | ||
| if ( $#ARGV !=1 ) { | ||
| die "Usage: $0 xml_infile xml_outfile\n"; | ||
| } | ||
|
|
||
| my $infile = shift; | ||
| # check infile exists | ||
| die "Can't find file \"$infile\"" | ||
| unless -f $infile; | ||
| # check we can read infile | ||
| if (! -r $infile) { | ||
| die "Can't read input $infile\n"; | ||
| } | ||
| # check we can open infile | ||
| open( INFILE,"<$infile" ) or | ||
| die "Can't input $infile $!"; | ||
|
|
||
| #my $outfile = 'fmt-manual.xml'; | ||
| my $outfile = shift; | ||
| #print "Infile: $infile, Outfile: $outfile\n"; | ||
| # check we can write to outfile | ||
| open( OUTFILE,">$outfile" ) or | ||
| die "Can't output $outfile $! for writing"; | ||
|
|
||
| my ($prev, $curr, $str); | ||
| $prev = ''; $curr = ''; | ||
| while ( <INFILE> ) { | ||
|
|
||
| print OUTFILE $prev; | ||
| $prev = $curr; | ||
| $curr = $_; | ||
| $str = ''; | ||
|
|
||
| if ( $prev =~ /<programlisting>$|<screen>$/ ) { | ||
| chomp $prev; | ||
| $curr = join( '', $prev, "<![CDATA[", $curr ); | ||
| $prev = ''; | ||
| next; | ||
| } | ||
| elsif ( $curr =~ /<\/programlisting>|<\/screen>/ ) { | ||
| chomp $prev; | ||
| $curr = join( '', $prev, "]]>", $curr ); | ||
| $prev = ''; | ||
| next; | ||
| } | ||
| } | ||
| print OUTFILE $curr; | ||
| close INFILE; | ||
| close OUTFILE; | ||
| exit; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,205 @@ | ||
|
|
||
| /*-------------------------------------------------------------*/ | ||
| /*--- Huffman coding low-level stuff ---*/ | ||
| /*--- huffman.c ---*/ | ||
| /*-------------------------------------------------------------*/ | ||
|
|
||
| /* ------------------------------------------------------------------ | ||
| This file is part of bzip2/libbzip2, a program and library for | ||
| lossless, block-sorting data compression. | ||
| bzip2/libbzip2 version 1.0.6 of 6 September 2010 | ||
| Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org> | ||
| Please read the WARNING, DISCLAIMER and PATENTS sections in the | ||
| README file. | ||
| This program is released under the terms of the license contained | ||
| in the file LICENSE. | ||
| ------------------------------------------------------------------ */ | ||
|
|
||
|
|
||
| #include "bzlib_private.h" | ||
|
|
||
| /*---------------------------------------------------*/ | ||
| #define WEIGHTOF(zz0) ((zz0) & 0xffffff00) | ||
| #define DEPTHOF(zz1) ((zz1) & 0x000000ff) | ||
| #define MYMAX(zz2,zz3) ((zz2) > (zz3) ? (zz2) : (zz3)) | ||
|
|
||
| #define ADDWEIGHTS(zw1,zw2) \ | ||
| (WEIGHTOF(zw1)+WEIGHTOF(zw2)) | \ | ||
| (1 + MYMAX(DEPTHOF(zw1),DEPTHOF(zw2))) | ||
|
|
||
| #define UPHEAP(z) \ | ||
| { \ | ||
| Int32 zz, tmp; \ | ||
| zz = z; tmp = heap[zz]; \ | ||
| while (weight[tmp] < weight[heap[zz >> 1]]) { \ | ||
| heap[zz] = heap[zz >> 1]; \ | ||
| zz >>= 1; \ | ||
| } \ | ||
| heap[zz] = tmp; \ | ||
| } | ||
|
|
||
| #define DOWNHEAP(z) \ | ||
| { \ | ||
| Int32 zz, yy, tmp; \ | ||
| zz = z; tmp = heap[zz]; \ | ||
| while (True) { \ | ||
| yy = zz << 1; \ | ||
| if (yy > nHeap) break; \ | ||
| if (yy < nHeap && \ | ||
| weight[heap[yy+1]] < weight[heap[yy]]) \ | ||
| yy++; \ | ||
| if (weight[tmp] < weight[heap[yy]]) break; \ | ||
| heap[zz] = heap[yy]; \ | ||
| zz = yy; \ | ||
| } \ | ||
| heap[zz] = tmp; \ | ||
| } | ||
|
|
||
|
|
||
| /*---------------------------------------------------*/ | ||
| void BZ2_hbMakeCodeLengths ( UChar *len, | ||
| Int32 *freq, | ||
| Int32 alphaSize, | ||
| Int32 maxLen ) | ||
| { | ||
| /*-- | ||
| Nodes and heap entries run from 1. Entry 0 | ||
| for both the heap and nodes is a sentinel. | ||
| --*/ | ||
| Int32 nNodes, nHeap, n1, n2, i, j, k; | ||
| Bool tooLong; | ||
|
|
||
| Int32 heap [ BZ_MAX_ALPHA_SIZE + 2 ]; | ||
| Int32 weight [ BZ_MAX_ALPHA_SIZE * 2 ]; | ||
| Int32 parent [ BZ_MAX_ALPHA_SIZE * 2 ]; | ||
|
|
||
| for (i = 0; i < alphaSize; i++) | ||
| weight[i+1] = (freq[i] == 0 ? 1 : freq[i]) << 8; | ||
|
|
||
| while (True) { | ||
|
|
||
| nNodes = alphaSize; | ||
| nHeap = 0; | ||
|
|
||
| heap[0] = 0; | ||
| weight[0] = 0; | ||
| parent[0] = -2; | ||
|
|
||
| for (i = 1; i <= alphaSize; i++) { | ||
| parent[i] = -1; | ||
| nHeap++; | ||
| heap[nHeap] = i; | ||
| UPHEAP(nHeap); | ||
| } | ||
|
|
||
| AssertH( nHeap < (BZ_MAX_ALPHA_SIZE+2), 2001 ); | ||
|
|
||
| while (nHeap > 1) { | ||
| n1 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1); | ||
| n2 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1); | ||
| nNodes++; | ||
| parent[n1] = parent[n2] = nNodes; | ||
| weight[nNodes] = ADDWEIGHTS(weight[n1], weight[n2]); | ||
| parent[nNodes] = -1; | ||
| nHeap++; | ||
| heap[nHeap] = nNodes; | ||
| UPHEAP(nHeap); | ||
| } | ||
|
|
||
| AssertH( nNodes < (BZ_MAX_ALPHA_SIZE * 2), 2002 ); | ||
|
|
||
| tooLong = False; | ||
| for (i = 1; i <= alphaSize; i++) { | ||
| j = 0; | ||
| k = i; | ||
| while (parent[k] >= 0) { k = parent[k]; j++; } | ||
| len[i-1] = j; | ||
| if (j > maxLen) tooLong = True; | ||
| } | ||
|
|
||
| if (! tooLong) break; | ||
|
|
||
| /* 17 Oct 04: keep-going condition for the following loop used | ||
| to be 'i < alphaSize', which missed the last element, | ||
| theoretically leading to the possibility of the compressor | ||
| looping. However, this count-scaling step is only needed if | ||
| one of the generated Huffman code words is longer than | ||
| maxLen, which up to and including version 1.0.2 was 20 bits, | ||
| which is extremely unlikely. In version 1.0.3 maxLen was | ||
| changed to 17 bits, which has minimal effect on compression | ||
| ratio, but does mean this scaling step is used from time to | ||
| time, enough to verify that it works. | ||
| This means that bzip2-1.0.3 and later will only produce | ||
| Huffman codes with a maximum length of 17 bits. However, in | ||
| order to preserve backwards compatibility with bitstreams | ||
| produced by versions pre-1.0.3, the decompressor must still | ||
| handle lengths of up to 20. */ | ||
|
|
||
| for (i = 1; i <= alphaSize; i++) { | ||
| j = weight[i] >> 8; | ||
| j = 1 + (j / 2); | ||
| weight[i] = j << 8; | ||
| } | ||
| } | ||
| } | ||
|
|
||
|
|
||
| /*---------------------------------------------------*/ | ||
| void BZ2_hbAssignCodes ( Int32 *code, | ||
| UChar *length, | ||
| Int32 minLen, | ||
| Int32 maxLen, | ||
| Int32 alphaSize ) | ||
| { | ||
| Int32 n, vec, i; | ||
|
|
||
| vec = 0; | ||
| for (n = minLen; n <= maxLen; n++) { | ||
| for (i = 0; i < alphaSize; i++) | ||
| if (length[i] == n) { code[i] = vec; vec++; }; | ||
| vec <<= 1; | ||
| } | ||
| } | ||
|
|
||
|
|
||
| /*---------------------------------------------------*/ | ||
| void BZ2_hbCreateDecodeTables ( Int32 *limit, | ||
| Int32 *base, | ||
| Int32 *perm, | ||
| UChar *length, | ||
| Int32 minLen, | ||
| Int32 maxLen, | ||
| Int32 alphaSize ) | ||
| { | ||
| Int32 pp, i, j, vec; | ||
|
|
||
| pp = 0; | ||
| for (i = minLen; i <= maxLen; i++) | ||
| for (j = 0; j < alphaSize; j++) | ||
| if (length[j] == i) { perm[pp] = j; pp++; }; | ||
|
|
||
| for (i = 0; i < BZ_MAX_CODE_LEN; i++) base[i] = 0; | ||
| for (i = 0; i < alphaSize; i++) base[length[i]+1]++; | ||
|
|
||
| for (i = 1; i < BZ_MAX_CODE_LEN; i++) base[i] += base[i-1]; | ||
|
|
||
| for (i = 0; i < BZ_MAX_CODE_LEN; i++) limit[i] = 0; | ||
| vec = 0; | ||
|
|
||
| for (i = minLen; i <= maxLen; i++) { | ||
| vec += (base[i+1] - base[i]); | ||
| limit[i] = vec-1; | ||
| vec <<= 1; | ||
| } | ||
| for (i = minLen + 1; i <= maxLen; i++) | ||
| base[i] = ((limit[i-1] + 1) << 1) - base[i]; | ||
| } | ||
|
|
||
|
|
||
| /*-------------------------------------------------------------*/ | ||
| /*--- end huffman.c ---*/ | ||
| /*-------------------------------------------------------------*/ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| LIBRARY LIBBZ2 | ||
| DESCRIPTION "libbzip2: library for data compression" | ||
| EXPORTS | ||
| BZ2_bzCompressInit | ||
| BZ2_bzCompress | ||
| BZ2_bzCompressEnd | ||
| BZ2_bzDecompressInit | ||
| BZ2_bzDecompress | ||
| BZ2_bzDecompressEnd | ||
| BZ2_bzReadOpen | ||
| BZ2_bzReadClose | ||
| BZ2_bzReadGetUnused | ||
| BZ2_bzRead | ||
| BZ2_bzWriteOpen | ||
| BZ2_bzWrite | ||
| BZ2_bzWriteClose | ||
| BZ2_bzWriteClose64 | ||
| BZ2_bzBuffToBuffCompress | ||
| BZ2_bzBuffToBuffDecompress | ||
| BZ2_bzlibVersion | ||
| BZ2_bzopen | ||
| BZ2_bzdopen | ||
| BZ2_bzread | ||
| BZ2_bzwrite | ||
| BZ2_bzflush | ||
| BZ2_bzclose | ||
| BZ2_bzerror |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,63 @@ | ||
| # Makefile for Microsoft Visual C++ 6.0 | ||
| # usage: nmake -f makefile.msc | ||
| # K.M. Syring (syring@gsf.de) | ||
| # Fixed up by JRS for bzip2-0.9.5d release. | ||
|
|
||
| CC=cl | ||
| CFLAGS= -DWIN32 -MD -Ox -D_FILE_OFFSET_BITS=64 -nologo | ||
|
|
||
| OBJS= blocksort.obj \ | ||
| huffman.obj \ | ||
| crctable.obj \ | ||
| randtable.obj \ | ||
| compress.obj \ | ||
| decompress.obj \ | ||
| bzlib.obj | ||
|
|
||
| all: lib bzip2 test | ||
|
|
||
| bzip2: lib | ||
| $(CC) $(CFLAGS) -o bzip2 bzip2.c libbz2.lib setargv.obj | ||
| $(CC) $(CFLAGS) -o bzip2recover bzip2recover.c | ||
|
|
||
| lib: $(OBJS) | ||
| lib /out:libbz2.lib $(OBJS) | ||
|
|
||
| test: bzip2 | ||
| type words1 | ||
| .\\bzip2 -1 < sample1.ref > sample1.rb2 | ||
| .\\bzip2 -2 < sample2.ref > sample2.rb2 | ||
| .\\bzip2 -3 < sample3.ref > sample3.rb2 | ||
| .\\bzip2 -d < sample1.bz2 > sample1.tst | ||
| .\\bzip2 -d < sample2.bz2 > sample2.tst | ||
| .\\bzip2 -ds < sample3.bz2 > sample3.tst | ||
| @echo All six of the fc's should find no differences. | ||
| @echo If fc finds an error on sample3.bz2, this could be | ||
| @echo because WinZip's 'TAR file smart CR/LF conversion' | ||
| @echo is too clever for its own good. Disable this option. | ||
| @echo The correct size for sample3.ref is 120,244. If it | ||
| @echo is 150,251, WinZip has messed it up. | ||
| fc sample1.bz2 sample1.rb2 | ||
| fc sample2.bz2 sample2.rb2 | ||
| fc sample3.bz2 sample3.rb2 | ||
| fc sample1.tst sample1.ref | ||
| fc sample2.tst sample2.ref | ||
| fc sample3.tst sample3.ref | ||
|
|
||
|
|
||
|
|
||
| clean: | ||
| del *.obj | ||
| del libbz2.lib | ||
| del bzip2.exe | ||
| del bzip2recover.exe | ||
| del sample1.rb2 | ||
| del sample2.rb2 | ||
| del sample3.rb2 | ||
| del sample1.tst | ||
| del sample2.tst | ||
| del sample3.tst | ||
|
|
||
| .c.obj: | ||
| $(CC) $(CFLAGS) -c $*.c -o $*.obj | ||
|
|