zlib 1.1.1

This commit is contained in:
Mark Adler 2011-09-09 23:20:07 -07:00
parent 965fe72aed
commit 02b6cf579f
14 changed files with 135 additions and 28 deletions

View File

@ -1,7 +1,15 @@
ChangeLog file for zlib ChangeLog file for zlib
Changes in 1.1 (24 Feb 98) Changes in 1.1.1 (27 Feb 98)
- fix macros _tr_tally_* in deflate.h for debug mode (Glenn Randers-Pehrson)
- remove block truncation heuristic which had very marginal effect for zlib
(smaller lit_bufsize than in gzip 1.2.4) and degraded a little the
compression ratio on some files. This also allows inlining _tr_tally for
matches in deflate_slow.
- added msdos/Makefile.w32 for WIN32 Microsoft Visual C++ (Bob Frazier)
Changes in 1.1.0 (24 Feb 98)
- do not return STREAM_END prematurely in inflate (John Bowler) - do not return STREAM_END prematurely in inflate (John Bowler)
- revert to the zlib 1.0.8 inflate to avoid the gcc 2.8.0 bug (Jeremy Buhler) - revert to the zlib 1.0.8 inflate to avoid the gcc 2.8.0 bug (Jeremy Buhler)
- compile with -DFASTEST to get compression code optimized for speed only - compile with -DFASTEST to get compression code optimized for speed only

1
INDEX
View File

@ -13,6 +13,7 @@ descrip.mms makefile for Vax/VMS
zlib.3 mini man page for zlib (volunteers to write full zlib.3 mini man page for zlib (volunteers to write full
man pages from zlib.h welcome. write to jloup@gzip.org) man pages from zlib.h welcome. write to jloup@gzip.org)
msdos/Makefile.w32 makefile for Microsoft Visual C++ 32-bit
msdos/Makefile.b32 makefile for Borland C++ 32-bit msdos/Makefile.b32 makefile for Borland C++ 32-bit
msdos/Makefile.bor makefile for Borland C/C++ 16-bit msdos/Makefile.bor makefile for Borland C/C++ 16-bit
msdos/Makefile.dj2 makefile for DJGPP 2.x msdos/Makefile.dj2 makefile for DJGPP 2.x

View File

@ -23,7 +23,7 @@ CFLAGS=-O
LDFLAGS=-L. -lz LDFLAGS=-L. -lz
LDSHARED=$(CC) LDSHARED=$(CC)
VER=1.1.0 VER=1.1.1
LIBS=libz.a LIBS=libz.a
SHAREDLIB=libz.so SHAREDLIB=libz.so

View File

@ -23,7 +23,7 @@ CFLAGS=-O
LDFLAGS=-L. -lz LDFLAGS=-L. -lz
LDSHARED=$(CC) LDSHARED=$(CC)
VER=1.1.0 VER=1.1.1
LIBS=libz.a LIBS=libz.a
SHAREDLIB=libz.so SHAREDLIB=libz.so

17
README
View File

@ -1,4 +1,4 @@
zlib 1.1.0 is a general purpose data compression library. All the code zlib 1.1.1 is a general purpose data compression library. All the code
is thread safe. The data format used by the zlib library is thread safe. The data format used by the zlib library
is described by RFCs (Request for Comments) 1950 to 1952 in the files is described by RFCs (Request for Comments) 1950 to 1952 in the files
ftp://ds.internic.net/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate ftp://ds.internic.net/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate
@ -25,15 +25,14 @@ Mark Nelson wrote an article about zlib for the Jan. 1997 issue of
Dr. Dobb's Journal; a copy of the article is available in Dr. Dobb's Journal; a copy of the article is available in
http://web2.airmail.net/markn/articles/zlibtool/zlibtool.htm http://web2.airmail.net/markn/articles/zlibtool/zlibtool.htm
The changes made in version 1.1.0 are documented in the file ChangeLog. The changes made in version 1.1.1 are documented in the file ChangeLog.
The main changes since 1.0.9 are: The main changes since 1.1.0 are:
- do not return STREAM_END prematurely in inflate (John Bowler) - fix macros _tr_tally_* in deflate.h for debug mode (Glenn Randers-Pehrson)
- revert to the zlib 1.0.8 inflate to avoid the gcc 2.8.0 bug (Jeremy Buhler) - remove block truncation heuristic which had very marginal effect for zlib
- compile with -DFASTEST to get compression code optimized for speed only (smaller lit_bufsize than in gzip 1.2.4) and degraded a little the
- in minigzip, try mmap'ing the input file first (Miguel Albrecht) compression ratio on some files. This also allows inlining _tr_tally for
- increase size of I/O buffers in minigzip.c and gzio.c (not a big gain matches in deflate_slow.
on Sun but significant on HP)
Unsupported third party contributions are provided in directory "contrib". Unsupported third party contributions are provided in directory "contrib".

View File

@ -52,7 +52,7 @@
#include "deflate.h" #include "deflate.h"
const char deflate_copyright[] = const char deflate_copyright[] =
" deflate 1.1.0 Copyright 1995-1998 Jean-loup Gailly "; " deflate 1.1.1 Copyright 1995-1998 Jean-loup Gailly ";
/* /*
If you use the zlib library in a product, an acknowledgment is welcome If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot in the documentation of your product. If for some reason you cannot
@ -1294,8 +1294,8 @@ local block_state deflate_slow(s, flush)
check_match(s, s->strstart-1, s->prev_match, s->prev_length); check_match(s, s->strstart-1, s->prev_match, s->prev_length);
bflush = _tr_tally(s, s->strstart -1 - s->prev_match, _tr_tally_dist(s, s->strstart -1 - s->prev_match,
s->prev_length - MIN_MATCH); s->prev_length - MIN_MATCH, bflush);
/* Insert in hash table all strings up to the end of the match. /* Insert in hash table all strings up to the end of the match.
* strstart-1 and strstart are already inserted. If there is not * strstart-1 and strstart are already inserted. If there is not
@ -1322,7 +1322,7 @@ local block_state deflate_slow(s, flush)
*/ */
Tracevv((stderr,"%c", s->window[s->strstart-1])); Tracevv((stderr,"%c", s->window[s->strstart-1]));
_tr_tally_lit(s, s->window[s->strstart-1], bflush); _tr_tally_lit(s, s->window[s->strstart-1], bflush);
if (bflush) { if (bflush) {
FLUSH_BLOCK_ONLY(s, 0); FLUSH_BLOCK_ONLY(s, 0);
} }
s->strstart++; s->strstart++;

View File

@ -310,9 +310,9 @@ void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
flush = (s->last_lit == s->lit_bufsize-1); \ flush = (s->last_lit == s->lit_bufsize-1); \
} }
#else #else
# define _tr_tally_lit(s, c, flush) _tr_tally(s, 0, c, flush) # define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
# define _tr_tally_dist(s, distance, length, flush) \ # define _tr_tally_dist(s, distance, length, flush) \
_tr_tally(s, distance, length, flush) flush = _tr_tally(s, distance, length)
#endif #endif
#endif #endif

View File

@ -7,7 +7,7 @@
#include "inftrees.h" #include "inftrees.h"
const char inflate_copyright[] = const char inflate_copyright[] =
" inflate 1.1.0 Copyright 1995-1998 Mark Adler "; " inflate 1.1.1 Copyright 1995-1998 Mark Adler ";
/* /*
If you use the zlib library in a product, an acknowledgment is welcome If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot in the documentation of your product. If for some reason you cannot

97
msdos/Makefile.w32 Normal file
View File

@ -0,0 +1,97 @@
# Makefile for zlib
# Microsoft 32-bit Visual C++ 4.0 or later (may work on earlier versions)
# To use, do "nmake /f makefile.w32"
# If you wish to reduce the memory requirements (default 256K for big
# objects plus a few K), you can add to CFLAGS below:
# -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14
# See zconf.h for details about the memory requirements.
# ------------- Microsoft Visual C++ 4.0 and later -------------
MODEL=
CFLAGS=-Ox -GA3s -nologo -W3
CC=cl
LD=link
LDFLAGS=
O=.obj
# variables
OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \
trees$(O)
OBJP1 = adler32$(O)+compress$(O)+crc32$(O)+gzio$(O)+uncompr$(O)+deflate$(O)+\
trees$(O)
OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \
infutil$(O) inffast$(O)
OBJP2 = zutil$(O)+inflate$(O)+infblock$(O)+inftrees$(O)+infcodes$(O)+\
infutil$(O)+inffast$(O)
all: zlib.lib example.exe minigzip.exe
adler32.obj: adler32.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
compress.obj: compress.c zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
crc32.obj: crc32.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
gzio.obj: gzio.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\
infcodes.h infutil.h
$(CC) -c $(CFLAGS) $*.c
infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\
infcodes.h inffast.h
$(CC) -c $(CFLAGS) $*.c
inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h
$(CC) -c $(CFLAGS) $*.c
inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h
$(CC) -c $(CFLAGS) $*.c
infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h
$(CC) -c $(CFLAGS) $*.c
inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
$(CC) -c $(CFLAGS) $*.c
trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
uncompr.obj: uncompr.c zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
zutil.obj: zutil.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
example.obj: example.c zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
minigzip.obj: minigzip.c zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
zlib.lib: $(OBJ1) $(OBJ2)
if exist zlib.lib del zlib.lib
lib /OUT:zlib.lib $(OBJ1) $(OBJ2)
example.exe: example.obj zlib.lib
$(LD) $(LDFLAGS) example.obj zlib.lib /OUT:example.exe /SUBSYSTEM:CONSOLE
minigzip.exe: minigzip.obj zlib.lib
$(LD) $(LDFLAGS) minigzip.obj zlib.lib /OUT:minigzip.exe /SUBSYSTEM:CONSOLE
test: example.exe minigzip.exe
example
echo hello world | minigzip | minigzip -d
#clean:
# del *.obj
# del *.exe

View File

@ -8,7 +8,7 @@ SUBSYSTEM WINDOWS
STUB 'WINSTUB.EXE' STUB 'WINSTUB.EXE'
VERSION 1.1 VERSION 1.11
CODE EXECUTE READ CODE EXECUTE READ

View File

@ -2,8 +2,8 @@
#define IDR_VERSION1 1 #define IDR_VERSION1 1
IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
FILEVERSION 1,1,0,0 FILEVERSION 1,1,1,0
PRODUCTVERSION 1,1,0,0 PRODUCTVERSION 1,1,1,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS 0 FILEFLAGS 0
FILEOS VOS_DOS_WINDOWS32 FILEOS VOS_DOS_WINDOWS32
@ -17,7 +17,7 @@ BEGIN
BEGIN BEGIN
VALUE "FileDescription", "zlib data compression library\0" VALUE "FileDescription", "zlib data compression library\0"
VALUE "FileVersion", "1.1.0\0" VALUE "FileVersion", "1.1.1\0"
VALUE "InternalName", "zlib\0" VALUE "InternalName", "zlib\0"
VALUE "OriginalFilename", "zlib.dll\0" VALUE "OriginalFilename", "zlib.dll\0"
VALUE "ProductName", "ZLib.DLL\0" VALUE "ProductName", "ZLib.DLL\0"

View File

@ -1042,8 +1042,9 @@ int _tr_tally (s, dist, lc)
s->dyn_dtree[d_code(dist)].Freq++; s->dyn_dtree[d_code(dist)].Freq++;
} }
#ifdef TRUNCATE_BLOCK
/* Try to guess if it is profitable to stop the current block here */ /* Try to guess if it is profitable to stop the current block here */
if (s->level > 2 && (s->last_lit & 0xfff) == 0) { if ((s->last_lit & 0x1fff) == 0 && s->level > 2) {
/* Compute an upper bound for the compressed length */ /* Compute an upper bound for the compressed length */
ulg out_length = (ulg)s->last_lit*8L; ulg out_length = (ulg)s->last_lit*8L;
ulg in_length = (ulg)((long)s->strstart - s->block_start); ulg in_length = (ulg)((long)s->strstart - s->block_start);
@ -1058,6 +1059,7 @@ int _tr_tally (s, dist, lc)
100L - out_length*100L/in_length)); 100L - out_length*100L/in_length));
if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1; if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
} }
#endif
return (s->last_lit == s->lit_bufsize-1); return (s->last_lit == s->lit_bufsize-1);
/* We avoid equality with lit_bufsize because of wraparound at 64K /* We avoid equality with lit_bufsize because of wraparound at 64K
* on 16 bit machines and because stored blocks are restricted to * on 16 bit machines and because stored blocks are restricted to

4
zlib.3
View File

@ -1,4 +1,4 @@
.TH ZLIB 3 "24 February 1998" .TH ZLIB 3 "27 February 1998"
.SH NAME .SH NAME
zlib \- compression/decompression library zlib \- compression/decompression library
.SH SYNOPSIS .SH SYNOPSIS
@ -81,7 +81,7 @@ These documents are also available in other formats from:
.IP .IP
ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html
.SH AUTHORS .SH AUTHORS
Version 1.1.0 Version 1.1.1
Copyright (C) 1995-1998 Jean-loup Gailly (jloup@gzip.org) Copyright (C) 1995-1998 Jean-loup Gailly (jloup@gzip.org)
and Mark Adler (madler@alumni.caltech.edu). and Mark Adler (madler@alumni.caltech.edu).
.LP .LP

4
zlib.h
View File

@ -1,5 +1,5 @@
/* zlib.h -- interface of the 'zlib' general purpose compression library /* zlib.h -- interface of the 'zlib' general purpose compression library
version 1.1.0, Feb 24th, 1998 version 1.1.1, Feb 27th, 1998
Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler
@ -37,7 +37,7 @@ extern "C" {
#include "zconf.h" #include "zconf.h"
#define ZLIB_VERSION "1.1.0" #define ZLIB_VERSION "1.1.1"
/* /*
The 'zlib' compression library provides in-memory compression and The 'zlib' compression library provides in-memory compression and