From 7147f24cd7b27dd95f6e841851a111cb311a9c07 Mon Sep 17 00:00:00 2001 From: Mark Adler Date: Fri, 9 Sep 2011 23:34:30 -0700 Subject: [PATCH] zlib 1.2.4.2 --- ChangeLog | 17 ++++++++ INDEX | 1 - Makefile.in | 14 +++---- README | 7 ++-- configure | 3 +- contrib/delphi/ZLib.pas | 2 +- contrib/dotzlib/DotZLib/UnitTests.cs | 2 +- contrib/infback9/inftree9.c | 4 +- contrib/masmx64/readme.txt | 8 ++-- contrib/masmx86/readme.txt | 52 ++++++++++++------------ contrib/pascal/zlibpas.pas | 2 +- contrib/puff/puff.c | 29 +++++++++---- contrib/puff/puff.h | 4 +- contrib/vstudio/vc10/zlib.rc | 6 +-- contrib/vstudio/vc9/zlib.rc | 6 +-- deflate.c | 2 +- gzguts.h | 12 +++++- gzlib.c | 6 ++- inftrees.c | 4 +- minigzip.c | 5 +++ {projects => old}/visualc6/README.txt | 0 {projects => old}/visualc6/example.dsp | 0 {projects => old}/visualc6/minigzip.dsp | 0 {projects => old}/visualc6/zlib.dsp | 0 {projects => old}/visualc6/zlib.dsw | 0 projects/README.projects | 41 ------------------- qnx/package.qpg | 10 ++--- treebuild.xml | 4 +- win32/Makefile.msc | 34 ++++++++++++---- win32/README-WIN32.txt | 6 +-- zconf.h | 5 ++- zconf.h.cmakein | 5 ++- zconf.h.in | 5 ++- zlib.3 | 4 +- zlib.3.pdf | Bin 8679 -> 8701 bytes zlib.h | 12 +++--- zutil.h | 12 ++---- 37 files changed, 176 insertions(+), 148 deletions(-) rename {projects => old}/visualc6/README.txt (100%) rename {projects => old}/visualc6/example.dsp (100%) rename {projects => old}/visualc6/minigzip.dsp (100%) rename {projects => old}/visualc6/zlib.dsp (100%) rename {projects => old}/visualc6/zlib.dsw (100%) delete mode 100644 projects/README.projects diff --git a/ChangeLog b/ChangeLog index 9817f59b..33a740db 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,23 @@ ChangeLog file for zlib +Changes in 1.2.4.2 (9 Apr 2010) +- Add consistent carriage returns to readme.txt's in masmx86 and masmx64 +- Really provide prototypes for *64 functions when building without LFS +- Only define unlink() in minigzip.c if unistd.h not included +- Update README to point to contrib/vstudio project files +- Move projects/vc6 to old/ and remove projects/ +- Include stdlib.h in minigzip.c for setmode() definition under WinCE +- Clean up assembler builds in win32/Makefile.msc [Rowe] +- Include sys/types.h for Microsoft for off_t definition +- Fix memory leak on error in gz_open() +- Symbolize nm as $NM in configure [Weigelt] +- Use TEST_LDSHARED instead of LDSHARED to link test programs [Weigelt] +- Add +0 to _FILE_OFFSET_BITS and _LFS64_LARGEFILE in case not defined +- Fix bug in gzeof() to take into account unused input data +- Avoid initialization of structures with variables in puff.c +- Updated win32/README-WIN32.txt [Rowe] + Changes in 1.2.4.1 (28 Mar 2010) - Remove the use of [a-z] constructs for sed in configure [gentoo 310225] - Remove $(SHAREDLIB) from LIBS in Makefile.in [Creech] diff --git a/INDEX b/INDEX index f66bf9bb..f6c51ca1 100644 --- a/INDEX +++ b/INDEX @@ -22,7 +22,6 @@ msdos/ makefiles for MSDOS nintendods/ makefile for Nintendo DS old/ makefiles for various architectures and zlib documentation files that have not yet been updated for zlib 1.2.x -projects/ projects for various Integrated Development Environments qnx/ makefiles for QNX watcom/ makefiles for OpenWatcom win32/ makefiles for Windows diff --git a/Makefile.in b/Makefile.in index a79f7393..e5bc2a3c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -26,13 +26,13 @@ CFLAGS=-O SFLAGS=-O -LDFLAGS=-L. libz.a +TEST_LDFLAGS=-L. libz.a LDSHARED=$(CC) CPP=$(CC) -E STATICLIB=libz.a SHAREDLIB=libz.so -SHAREDLIBV=libz.so.1.2.4.1 +SHAREDLIBV=libz.so.1.2.4.2 SHAREDLIBM=libz.so.1 LIBS=$(STATICLIB) $(SHAREDLIBV) @@ -136,17 +136,17 @@ minigzip64.o: minigzip.c zlib.h zconf.h -@mv objs/$*.o $@ $(SHAREDLIBV): $(PIC_OBJS) - $(LDSHARED) $(SFLAGS) -o $@ $(PIC_OBJS) $(LDSHAREDLIBC) + $(LDSHARED) $(SFLAGS) -o $@ $(PIC_OBJS) $(LDSHAREDLIBC) $(LDFLAGS) rm -f $(SHAREDLIB) $(SHAREDLIBM) ln -s $@ $(SHAREDLIB) ln -s $@ $(SHAREDLIBM) -@rmdir objs example$(EXE): example.o $(STATICLIB) - $(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS) + $(CC) $(CFLAGS) -o $@ example.o $(TEST_LDFLAGS) minigzip$(EXE): minigzip.o $(STATICLIB) - $(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS) + $(CC) $(CFLAGS) -o $@ minigzip.o $(TEST_LDFLAGS) examplesh$(EXE): example.o $(SHAREDLIBV) $(CC) $(CFLAGS) -o $@ example.o -L. $(SHAREDLIBV) @@ -155,10 +155,10 @@ minigzipsh$(EXE): minigzip.o $(SHAREDLIBV) $(CC) $(CFLAGS) -o $@ minigzip.o -L. $(SHAREDLIBV) example64$(EXE): example64.o $(STATICLIB) - $(CC) $(CFLAGS) -o $@ example64.o $(LDFLAGS) + $(CC) $(CFLAGS) -o $@ example64.o $(TEST_LDFLAGS) minigzip64$(EXE): minigzip64.o $(STATICLIB) - $(CC) $(CFLAGS) -o $@ minigzip64.o $(LDFLAGS) + $(CC) $(CFLAGS) -o $@ minigzip64.o $(TEST_LDFLAGS) install-libs: $(LIBS) -@if [ ! -d $(DESTDIR)$(exec_prefix) ]; then mkdir -p $(DESTDIR)$(exec_prefix); fi diff --git a/README b/README index a3302675..3c4f36e2 100644 --- a/README +++ b/README @@ -1,6 +1,6 @@ ZLIB DATA COMPRESSION LIBRARY -zlib 1.2.4.1 is a general purpose data compression library. All the code is +zlib 1.2.4.2 is a general purpose data compression library. All the code is thread safe. The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) @@ -16,7 +16,8 @@ minigzip.c. To compile all files and run the test program, follow the instructions given at the top of Makefile.in. In short "./configure; make test", and if that goes well, "make install" should work for most flavors of Unix. For Windows, use one -of the special makefiles in win32/ or projects/ . For VMS, use make_vms.com. +of the special makefiles in win32/ or contrib/vstudio/ . For VMS, use +make_vms.com. Questions about zlib should be sent to , or to Gilles Vollant for the Windows DLL version. The zlib home page is @@ -30,7 +31,7 @@ Mark Nelson wrote an article about zlib for the Jan. 1997 issue of Dr. Dobb's Journal; a copy of the article is available at http://marknelson.us/1997/01/01/zlib-engine/ . -The changes made in version 1.2.4.1 are documented in the file ChangeLog. +The changes made in version 1.2.4.2 are documented in the file ChangeLog. Unsupported third party contributions are provided in directory contrib/ . diff --git a/configure b/configure index 8a36129a..577cba70 100755 --- a/configure +++ b/configure @@ -45,6 +45,7 @@ VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h` AR=${AR-"${CROSS_PREFIX}ar"} AR_RC="${AR} rc" RANLIB=${RANLIB-"${CROSS_PREFIX}ranlib"} +NM=${NM-"nm"} LDCONFIG=${LDCONFIG-"ldconfig"} LDSHAREDLIBC="${LDSHAREDLIBC-"-lc"}" prefix=${prefix-/usr/local} @@ -505,7 +506,7 @@ fi CPP=${CPP-"$CC -E"} case $CFLAGS in *ASMV*) - if test "`nm $test.o | grep _hello`" = ""; then + if test "`$NM $test.o | grep _hello`" = ""; then CPP="$CPP -DNO_UNDERLINE" echo Checking for underline in external names... No. else diff --git a/contrib/delphi/ZLib.pas b/contrib/delphi/ZLib.pas index 03450e7c..72ef99f3 100644 --- a/contrib/delphi/ZLib.pas +++ b/contrib/delphi/ZLib.pas @@ -152,7 +152,7 @@ procedure DecompressToUserBuf(const InBuf: Pointer; InBytes: Integer; const OutBuf: Pointer; BufSize: Integer); const - zlib_version = '1.2.4.1'; + zlib_version = '1.2.4.2'; type EZlibError = class(Exception); diff --git a/contrib/dotzlib/DotZLib/UnitTests.cs b/contrib/dotzlib/DotZLib/UnitTests.cs index 82c749eb..6cfdaa70 100644 --- a/contrib/dotzlib/DotZLib/UnitTests.cs +++ b/contrib/dotzlib/DotZLib/UnitTests.cs @@ -156,7 +156,7 @@ namespace DotZLibTests public void Info_Version() { Info info = new Info(); - Assert.AreEqual("1.2.4.1", Info.Version); + Assert.AreEqual("1.2.4.2", Info.Version); Assert.AreEqual(32, info.SizeOfUInt); Assert.AreEqual(32, info.SizeOfULong); Assert.AreEqual(32, info.SizeOfPointer); diff --git a/contrib/infback9/inftree9.c b/contrib/infback9/inftree9.c index e8988939..362008cc 100644 --- a/contrib/infback9/inftree9.c +++ b/contrib/infback9/inftree9.c @@ -9,7 +9,7 @@ #define MAXBITS 15 const char inflate9_copyright[] = - " inflate9 1.2.4.1 Copyright 1995-2010 Mark Adler "; + " inflate9 1.2.4.2 Copyright 1995-2010 Mark Adler "; /* 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 @@ -64,7 +64,7 @@ unsigned short FAR *work; static const unsigned short lext[31] = { /* Length codes 257..285 extra */ 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132, - 133, 133, 133, 133, 144, 67, 206}; + 133, 133, 133, 133, 144, 202, 75}; static const unsigned short dbase[32] = { /* Distance codes 0..31 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, diff --git a/contrib/masmx64/readme.txt b/contrib/masmx64/readme.txt index 1115d9b5..2da67334 100644 --- a/contrib/masmx64/readme.txt +++ b/contrib/masmx64/readme.txt @@ -12,10 +12,10 @@ inffasx64.asm and inffas8664.c were written by Chris Anderson, by optimizing Use instructions ---------------- -Assemble the .asm files using MASM and put the object files into the zlib source -directory. You can also get object files here: - - http://www.winimage.com/zLibDll/zlib124_masm_obj.zip +Assemble the .asm files using MASM and put the object files into the zlib source +directory. You can also get object files here: + + http://www.winimage.com/zLibDll/zlib124_masm_obj.zip define ASMV and ASMINF in your project. Include inffas8664.c in your source tree, and inffasx64.obj and gvmat64.obj as object to link. diff --git a/contrib/masmx86/readme.txt b/contrib/masmx86/readme.txt index 90230f2d..3271f720 100644 --- a/contrib/masmx86/readme.txt +++ b/contrib/masmx86/readme.txt @@ -1,27 +1,27 @@ - -Summary -------- -This directory contains ASM implementations of the functions -longest_match() and inflate_fast(). - - -Use instructions ----------------- -Assemble using MASM, and copy the object files into the zlib source -directory, then run the appropriate makefile, as suggested below. You can -donwload MASM from here: - + +Summary +------- +This directory contains ASM implementations of the functions +longest_match() and inflate_fast(). + + +Use instructions +---------------- +Assemble using MASM, and copy the object files into the zlib source +directory, then run the appropriate makefile, as suggested below. You can +donwload MASM from here: + http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64 - -You can also get objects files here: - - http://www.winimage.com/zLibDll/zlib124_masm_obj.zip - -Build instructions ------------------- -* With Microsoft C and MASM: -nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj" - -* With Borland C and TASM: -make -f win32/Makefile.bor LOCAL_ZLIB="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj" OBJPA="+match686c.obj+match686.obj+inffas32.obj" - + +You can also get objects files here: + + http://www.winimage.com/zLibDll/zlib124_masm_obj.zip + +Build instructions +------------------ +* With Microsoft C and MASM: +nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj" + +* With Borland C and TASM: +make -f win32/Makefile.bor LOCAL_ZLIB="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj" OBJPA="+match686c.obj+match686.obj+inffas32.obj" + diff --git a/contrib/pascal/zlibpas.pas b/contrib/pascal/zlibpas.pas index 9772f11e..e0bc74b5 100644 --- a/contrib/pascal/zlibpas.pas +++ b/contrib/pascal/zlibpas.pas @@ -10,7 +10,7 @@ unit zlibpas; interface const - ZLIB_VERSION = '1.2.4.1'; + ZLIB_VERSION = '1.2.4.2'; type alloc_func = function(opaque: Pointer; items, size: Integer): Pointer; diff --git a/contrib/puff/puff.c b/contrib/puff/puff.c index df5b79f8..650694e9 100644 --- a/contrib/puff/puff.c +++ b/contrib/puff/puff.c @@ -1,8 +1,8 @@ /* * puff.c - * Copyright (C) 2002-2008 Mark Adler + * Copyright (C) 2002-2010 Mark Adler * For conditions of distribution and use, see copyright notice in puff.h - * version 2.0, 25 Jul 2008 + * version 2.1, 4 Apr 2010 * * puff.c is a simple inflate written to be an unambiguous way to specify the * deflate format. It is not written for speed but rather simplicity. As a @@ -67,6 +67,8 @@ * - Add option in TEST code for puff to write the data * - Add option in TEST code to skip input bytes * - Allow TEST code to read from piped stdin + * 2.1 4 Apr 2010 - Avoid variable initialization for happier compilers + * - Avoid unsigned comparisons for even happier compilers */ #include /* for setjmp(), longjmp(), and jmp_buf */ @@ -516,8 +518,7 @@ local int fixed(struct state *s) static int virgin = 1; static short lencnt[MAXBITS+1], lensym[FIXLCODES]; static short distcnt[MAXBITS+1], distsym[MAXDCODES]; - static struct huffman lencode = {lencnt, lensym}; - static struct huffman distcode = {distcnt, distsym}; + static struct huffman lencode, distcode; /* build fixed huffman tables if first call (may not be thread safe) */ if (virgin) { @@ -540,6 +541,12 @@ local int fixed(struct state *s) lengths[symbol] = 5; construct(&distcode, lengths, MAXDCODES); + /* construct lencode and distcode */ + lencode.count = lencnt; + lencode.symbol = lensym; + distcode.count = distcnt; + distcode.symbol = distsym; + /* do this just once */ virgin = 0; } @@ -643,11 +650,16 @@ local int dynamic(struct state *s) short lengths[MAXCODES]; /* descriptor code lengths */ short lencnt[MAXBITS+1], lensym[MAXLCODES]; /* lencode memory */ short distcnt[MAXBITS+1], distsym[MAXDCODES]; /* distcode memory */ - struct huffman lencode = {lencnt, lensym}; /* length code */ - struct huffman distcode = {distcnt, distsym}; /* distance code */ + struct huffman lencode, distcode; /* length and distance codes */ static const short order[19] = /* permutation of code length codes */ {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; + /* construct lencode and distcode */ + lencode.count = lencnt; + lencode.symbol = lensym; + distcode.count = distcnt; + distcode.symbol = distsym; + /* get number of lengths in each table, check lengths */ nlen = bits(s, 5) + 257; ndist = bits(s, 5) + 1; @@ -869,7 +881,8 @@ local void *load(char *name, size_t *len) int main(int argc, char **argv) { - int ret, skip = 0, put = 0; + int ret, put = 0; + unsigned skip = 0; char *arg, *name = NULL; unsigned char *source = NULL, *dest; size_t len = 0; @@ -881,7 +894,7 @@ int main(int argc, char **argv) if (arg[1] == 'w' && arg[2] == 0) put = 1; else if (arg[1] >= '0' && arg[1] <= '9') - skip = atoi(arg + 1); + skip = (unsigned)atoi(arg + 1); else { fprintf(stderr, "invalid option %s\n", arg); return 3; diff --git a/contrib/puff/puff.h b/contrib/puff/puff.h index 8d7f5f87..88d1b384 100644 --- a/contrib/puff/puff.h +++ b/contrib/puff/puff.h @@ -1,6 +1,6 @@ /* puff.h - Copyright (C) 2002-2008 Mark Adler, all rights reserved - version 1.9, 10 Jan 2008 + Copyright (C) 2002-2010 Mark Adler, all rights reserved + version 2.1, 4 Apr 2010 This software is provided 'as-is', without any express or implied warranty. In no event will the author be held liable for any damages diff --git a/contrib/vstudio/vc10/zlib.rc b/contrib/vstudio/vc10/zlib.rc index d6b99913..38615f02 100644 --- a/contrib/vstudio/vc10/zlib.rc +++ b/contrib/vstudio/vc10/zlib.rc @@ -2,8 +2,8 @@ #define IDR_VERSION1 1 IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1,2,4,1 - PRODUCTVERSION 1,2,4,1 + FILEVERSION 1,2,4,2 + PRODUCTVERSION 1,2,4,2 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGS 0 FILEOS VOS_DOS_WINDOWS32 @@ -17,7 +17,7 @@ BEGIN BEGIN VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.2.4.1\0" + VALUE "FileVersion", "1.2.4.2\0" VALUE "InternalName", "zlib\0" VALUE "OriginalFilename", "zlib.dll\0" VALUE "ProductName", "ZLib.DLL\0" diff --git a/contrib/vstudio/vc9/zlib.rc b/contrib/vstudio/vc9/zlib.rc index d6b99913..38615f02 100644 --- a/contrib/vstudio/vc9/zlib.rc +++ b/contrib/vstudio/vc9/zlib.rc @@ -2,8 +2,8 @@ #define IDR_VERSION1 1 IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1,2,4,1 - PRODUCTVERSION 1,2,4,1 + FILEVERSION 1,2,4,2 + PRODUCTVERSION 1,2,4,2 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGS 0 FILEOS VOS_DOS_WINDOWS32 @@ -17,7 +17,7 @@ BEGIN BEGIN VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.2.4.1\0" + VALUE "FileVersion", "1.2.4.2\0" VALUE "InternalName", "zlib\0" VALUE "OriginalFilename", "zlib.dll\0" VALUE "ProductName", "ZLib.DLL\0" diff --git a/deflate.c b/deflate.c index b7fb9fc6..70255287 100644 --- a/deflate.c +++ b/deflate.c @@ -52,7 +52,7 @@ #include "deflate.h" const char deflate_copyright[] = - " deflate 1.2.4.1 Copyright 1995-2010 Jean-loup Gailly and Mark Adler "; + " deflate 1.2.4.2 Copyright 1995-2010 Jean-loup Gailly and Mark Adler "; /* 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 diff --git a/gzguts.h b/gzguts.h index 53857e0a..a0e71198 100644 --- a/gzguts.h +++ b/gzguts.h @@ -3,7 +3,7 @@ * For conditions of distribution and use, see copyright notice in zlib.h */ -#if _LARGEFILE64_SOURCE == 1 +#if _LARGEFILE64_SOURCE # ifndef _LARGEFILE_SOURCE # define _LARGEFILE_SOURCE 1 # endif @@ -56,12 +56,20 @@ # endif #endif -#if _LARGEFILE64_SOURCE == 1 +#if _LARGEFILE64_SOURCE # define z_off64_t off64_t #else # define z_off64_t z_off_t #endif +/* provide prototypes for these when building zlib without LFS */ +#if _LARGEFILE64_SOURCE+0 != 1 || _LFS64_LARGEFILE+0 != 1 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); +#endif + /* default i/o buffer size -- double this for output when reading */ #define GZBUFSIZE 8192 diff --git a/gzlib.c b/gzlib.c index 15999aee..d1b62534 100644 --- a/gzlib.c +++ b/gzlib.c @@ -5,7 +5,7 @@ #include "gzguts.h" -#if _LARGEFILE64_SOURCE == 1 && _LFS64_LARGEFILE == 1 +#if _LARGEFILE64_SOURCE && _LFS64_LARGEFILE # define LSEEK lseek64 #else # define LSEEK lseek @@ -172,6 +172,7 @@ local gzFile gz_open(path, fd, mode) O_APPEND))), 0666); if (state->fd == -1) { + free(state->path); free(state); return NULL; } @@ -432,7 +433,8 @@ int ZEXPORT gzeof(file) return 0; /* return end-of-file state */ - return state->mode == GZ_READ ? (state->eof && state->have == 0) : 0; + return state->mode == GZ_READ ? + (state->eof && state->strm.avail_in == 0 && state->have == 0) : 0; } /* -- see zlib.h -- */ diff --git a/inftrees.c b/inftrees.c index 90de8b87..1ea90f79 100644 --- a/inftrees.c +++ b/inftrees.c @@ -9,7 +9,7 @@ #define MAXBITS 15 const char inflate_copyright[] = - " inflate 1.2.4.1 Copyright 1995-2010 Mark Adler "; + " inflate 1.2.4.2 Copyright 1995-2010 Mark Adler "; /* 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 @@ -62,7 +62,7 @@ unsigned short FAR *work; 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; static const unsigned short lext[31] = { /* Length codes 257..285 extra */ 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 67, 206}; + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 202, 75}; static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, diff --git a/minigzip.c b/minigzip.c index 9677fa07..f43cb544 100644 --- a/minigzip.c +++ b/minigzip.c @@ -32,6 +32,9 @@ #if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__) # include # include +# ifdef UNDER_CE +# include +# endif # define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) #else # define SET_BINARY_MODE(file) @@ -50,9 +53,11 @@ # include /* for fileno */ #endif +#if !defined(Z_HAVE_UNISTD_H) && _LARGEFILE64_SOURCE+0 != 1 #ifndef WIN32 /* unlink already in stdio.h for WIN32 */ extern int unlink OF((const char *)); #endif +#endif #if defined(UNDER_CE) # include diff --git a/projects/visualc6/README.txt b/old/visualc6/README.txt similarity index 100% rename from projects/visualc6/README.txt rename to old/visualc6/README.txt diff --git a/projects/visualc6/example.dsp b/old/visualc6/example.dsp similarity index 100% rename from projects/visualc6/example.dsp rename to old/visualc6/example.dsp diff --git a/projects/visualc6/minigzip.dsp b/old/visualc6/minigzip.dsp similarity index 100% rename from projects/visualc6/minigzip.dsp rename to old/visualc6/minigzip.dsp diff --git a/projects/visualc6/zlib.dsp b/old/visualc6/zlib.dsp similarity index 100% rename from projects/visualc6/zlib.dsp rename to old/visualc6/zlib.dsp diff --git a/projects/visualc6/zlib.dsw b/old/visualc6/zlib.dsw similarity index 100% rename from projects/visualc6/zlib.dsw rename to old/visualc6/zlib.dsw diff --git a/projects/README.projects b/projects/README.projects deleted file mode 100644 index 1c029e4a..00000000 --- a/projects/README.projects +++ /dev/null @@ -1,41 +0,0 @@ -This directory contains project files for building zlib under various -Integrated Development Environments (IDE). - -If you wish to submit a new project to this directory, you should comply -to the following requirements. Otherwise (e.g. if you wish to integrate -a custom piece of code that changes the zlib interface or its behavior), -please consider submitting the project to the contrib directory. - - -Requirements -============ - -- The project must build zlib using the source files from the official - zlib source distribution, exclusively. - -- If the project produces redistributable builds (e.g. shared objects - or DLL files), these builds must be compatible to those produced by - makefiles, if such makefiles exist in the zlib distribution. - In particular, if the project produces a DLL build for the Win32 - platform, this build must comply to the officially-ammended Win32 DLL - Application Binary Interface (ABI), described in win32/DLL_FAQ.txt. - -- The project may provide additional build targets, which depend on - 3rd-party (unofficially-supported) software, present in the contrib - directory. For example, it is possible to provide an "ASM build", - besides the officially-supported build, and have ASM source files - among its dependencies. - -- If there are significant differences between the project files created - by different versions of an IDE (e.g. Visual C++ 6.0 vs. 7.0), the name - of the project directory should contain the version number of the IDE - for which the project is intended (e.g. "visualc6" for Visual C++ 6.0, - or "visualc7" for Visual C++ 7.0 and 7.1). - - -Current projects -================ - -visualc6/ by Simon-Pierre Cadieux - and Cosmin Truta - Project for Microsoft Visual C++ 6.0 diff --git a/qnx/package.qpg b/qnx/package.qpg index bf3433a3..99d3701a 100644 --- a/qnx/package.qpg +++ b/qnx/package.qpg @@ -25,10 +25,10 @@ - - - - + + + + @@ -63,7 +63,7 @@ - 1.2.4.1 + 1.2.4.2 Medium Stable diff --git a/treebuild.xml b/treebuild.xml index e30532ed..d2c6a259 100644 --- a/treebuild.xml +++ b/treebuild.xml @@ -1,6 +1,6 @@ - - + + zip compression library diff --git a/win32/Makefile.msc b/win32/Makefile.msc index a731c0c6..fa10a1aa 100644 --- a/win32/Makefile.msc +++ b/win32/Makefile.msc @@ -2,15 +2,16 @@ # zlib is copyright (C) 1995-2006 Jean-loup Gailly and Mark Adler # # Usage: -# nmake -f win32/Makefile.msc (standard build) -# nmake -f win32/Makefile.msc LOC=-DFOO (nonstandard build) -# nmake -f win32/Makefile.msc LOC=-DASMV OBJA=match.obj (use ASM code) - +# nmake -f win32/Makefile.msc (standard build) +# nmake -f win32/Makefile.msc LOC=-DFOO (nonstandard build) +# nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" \ +# OBJA="inffas32.obj match686.obj" (use ASM code, x86) +# nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF" \ +# OBJA="inffasx64.obj gvmat64.obj inffas8664.c" (use ASM code, x64) # optional build flags LOC = - # variables STATICLIB = zlib.lib SHAREDLIB = zlib1.dll @@ -23,13 +24,13 @@ AR = lib RC = rc CFLAGS = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" $(LOC) WFLAGS = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -ASFLAGS = -coff -Zi +ASFLAGS = -coff -Zi $(LOC) LDFLAGS = -nologo -debug -incremental:no -opt:ref ARFLAGS = -nologo RCFLAGS = /dWIN32 /r OBJS = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj \ - gzwrite.obj infback.obj inffast.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj + gzwrite.obj infback.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj OBJA = @@ -71,7 +72,13 @@ minigzip_d.exe: minigzip.obj $(IMPLIB) .c.obj: $(CC) -c $(WFLAGS) $(CFLAGS) $< -.asm.obj: +{contrib/masmx64}.c.obj: + $(CC) -c $(WFLAGS) $(CFLAGS) $< + +{contrib/masmx64}.asm.obj: + $(AS) -c $(ASFLAGS) $< + +{contrib/masmx86}.asm.obj: $(AS) -c $(ASFLAGS) $< adler32.obj: adler32.c zlib.h zconf.h @@ -107,6 +114,17 @@ uncompr.obj: uncompr.c zlib.h zconf.h zutil.obj: zutil.c zutil.h zlib.h zconf.h +gvmat64.obj: contrib\masmx64\gvmat64.asm + +inffasx64.obj: contrib\masmx64\inffasx64.asm + +inffas8664.obj: contrib\masmx64\inffas8664.c zutil.h zlib.h zconf.h \ + inftrees.h inflate.h inffast.h + +inffas32.obj: contrib\masmx86\inffas32.asm + +match686.obj: contrib\masmx86\match686.asm + example.obj: example.c zlib.h zconf.h minigzip.obj: minigzip.c zlib.h zconf.h diff --git a/win32/README-WIN32.txt b/win32/README-WIN32.txt index 35062cdc..1e4c093c 100644 --- a/win32/README-WIN32.txt +++ b/win32/README-WIN32.txt @@ -47,9 +47,9 @@ The package zlib-1.2.4-win32-x86.zip contains the following files: zdll.lib Install these files into the compilers' LIB path if linking zdll.exp a compiled program to the zlib1.dll binary - zlib.lib Install these files into the compilers' LIB path if linking - zlib.pdb a compiled program to the zlib1.dll binary (zlib.pdb ensures - that the resulting program may be debugged) + zlib.lib Install these files into the compilers' LIB path to link zlib + zlib.pdb into compiled programs, without zlib1.dll runtime dependency + (zlib.pdb provides debugging info to the compile time linker) zlib1.dll Install this binary shared library into the system PATH, or the program's runtime directory (where the .exe resides) diff --git a/zconf.h b/zconf.h index 6ad8a04e..d3eaf918 100644 --- a/zconf.h +++ b/zconf.h @@ -364,8 +364,11 @@ typedef uLong FAR uLongf; # define Z_HAVE_UNISTD_H #endif -#if defined(Z_HAVE_UNISTD_H) || _LARGEFILE64_SOURCE == 1 +#ifdef STDC # include /* for off_t */ +#endif + +#if defined(Z_HAVE_UNISTD_H) || _LARGEFILE64_SOURCE # include /* for SEEK_* and off_t */ # ifdef VMS # include /* for off_t */ diff --git a/zconf.h.cmakein b/zconf.h.cmakein index fcd57106..bbe25a7d 100644 --- a/zconf.h.cmakein +++ b/zconf.h.cmakein @@ -366,8 +366,11 @@ typedef uLong FAR uLongf; # define Z_HAVE_UNISTD_H #endif -#if defined(Z_HAVE_UNISTD_H) || _LARGEFILE64_SOURCE == 1 +#ifdef STDC # include /* for off_t */ +#endif + +#if defined(Z_HAVE_UNISTD_H) || _LARGEFILE64_SOURCE # include /* for SEEK_* and off_t */ # ifdef VMS # include /* for off_t */ diff --git a/zconf.h.in b/zconf.h.in index 6ad8a04e..d3eaf918 100644 --- a/zconf.h.in +++ b/zconf.h.in @@ -364,8 +364,11 @@ typedef uLong FAR uLongf; # define Z_HAVE_UNISTD_H #endif -#if defined(Z_HAVE_UNISTD_H) || _LARGEFILE64_SOURCE == 1 +#ifdef STDC # include /* for off_t */ +#endif + +#if defined(Z_HAVE_UNISTD_H) || _LARGEFILE64_SOURCE # include /* for SEEK_* and off_t */ # ifdef VMS # include /* for off_t */ diff --git a/zlib.3 b/zlib.3 index 2c1679d7..552318d4 100644 --- a/zlib.3 +++ b/zlib.3 @@ -1,4 +1,4 @@ -.TH ZLIB 3 "28 Mar 2010" +.TH ZLIB 3 "9 Apr 2010" .SH NAME zlib \- compression/decompression library .SH SYNOPSIS @@ -125,7 +125,7 @@ before asking for help. Send questions and/or comments to zlib@gzip.org, or (for the Windows DLL version) to Gilles Vollant (info@winimage.com). .SH AUTHORS -Version 1.2.4.1 +Version 1.2.4.2 Copyright (C) 1995-2010 Jean-loup Gailly (jloup@gzip.org) and Mark Adler (madler@alumni.caltech.edu). .LP diff --git a/zlib.3.pdf b/zlib.3.pdf index 0d63b20ddf432f2a9ac5a06855c78a612302709f..abbbb7ffef0c21d31491cdea2b916a283ade57c6 100644 GIT binary patch delta 6219 zcma);WmpuzqK1j3Ly!*X4q28>y1Pp{m+l6Mr349OY3Xzck(83|5)eT_a8VSIM(O6B zbMAAW=icLwd*;_S?|d`gH}h+LDcvZcHBl=a)R83({VRqh^vXB@v6-ov<(ZrZ4SP$q z#!fD$F-m?s^@4^QBR~Eq^>SQfT|2(@TuXQfl!<$WEw zbw82iT)7qEksF#l-JYj2!hd>UvOA&Y!I<@(Xy;1!hK-wqUxUvzKmFuZ6DgQYZH|(& zBIxUlx|sLk@MajkX*Ii}q(K64r+H>L9h##e>AE{_e~x@7^6@^8n1Gx6*zv;`7vH|+ zzT;Ktk_&YD`pBzgIcxQfSo**>nBE1fYiIj=J7ZqJq~X_tFlqDf38f^*ToH`m^Lw(_ zN7E}I>^4#FmGsW;e>rxlVQ+pf{WBGX@ypqw^I1@3FkpO-{oa1^>Xnl^fjPsfr!LvBt8oF&xM!{romGN@;xQ9RE+8Zu%N-x_C9ohAD0Dfq24hEc_YYM2U z(6P7m^aof=Ikph5Hs0HP9&1hF;iZYk!V+wq=c8UCOcaxnH+%-tbv%$M`zl<5j>wn9 ze2C%Qyz;Y!SVEG64N5nBebE{Fg3F}k7%KK;HBxmz%lmBPO(nBKFnee;AT1rCgE*RXc6QTtw7+*$ zdH9`8706)rh^a7<;A6J{-)wyW8!G1a*yH8xGg?SR@M zzgn5~197UICxCJ>G!{isaD#6JT(8Ds2QaqCk2Yy1?mZ^@^CxV8+bqsS;d71APEhwb zIj%*{%#1wjrByS@XGOXFv7xfP@lsC)zx?Lkq4)|b3u%>JlT2c}Q}&DA<6ez|cbQ^z zTyP7KVtytdb!tLjQ2RG^1c+=j=1t?#^YxQ9mGUP6PSPZ`_U$O5h+o^_oE|3q@X^Fu zZPlz1nkEUMPRbIOVv^);&Jg)L*L>1wjmP~4&!)174BgHIgnn_AmknqGSA{ik@N{Kd zwAeiOHXo0$2d$#Kv<#tp9aw5#bl<0xp^XzZyrL*kN6z_}{ z=_}T)sOCmMlr+SXJfWXmG$1}Dcd^%)q{}xeSyMd#Q2Q@>Lg>hVtMb?~>y-CpX#+Txb zC37C;7(?tu-{KUjA#={izJVa*?70Y_=(0wfg5x(xG54pywl@2-p=_Ka`bnRkYe~aj z05EjWRnF#nOOXnFvS(%dFC=^m#{KTKyzke$vlga@Xbw*h$ z&cY0^0;NBoQPMKzA_SfeVcZ!$Q7!LtJ{vkN?5Q}m+|V^ll)Adb5OhKIaIWIx?~#i6 z1Y)QJ8gT0i50yLgw{KVhO5GQMeD!S<XxTa_G3se@Z;}d!El9i{Uv2rqorKKz+9;6M@GEK6 zMAtFSEjnc@z1P)EA% zB2JOUcF~%?i$BSUVT6G&zBV^MsA?7(phju_N8O{H8vRh6|!so*EUg*amIu{suNAm==0 z2>r0#mj8Zk1WF!?&;5K^G(eO_jq2AQ*cKUKQey8k{ir+< z+{P4s{TgiN7X>n<&QGQC#v-j2LO5)2(aq*~#BT)|LqQ9AQzzQT`)DG)=a`(-glbeR zcCKTBQ6|iHt67WLS$+;ekSMTlw_|>Yz#%e%CH*Ad{UXrOA#HXC= zdMT-(Ryd^$QXjAI$M{N!iF}*vO)W$8GTv;oZ+oLTTO5D*$2b`#Um+Ecjul;Eheb2lK@lu7U|8ceo;iKbc{;P-fXq2pjaa#G&+$^fTP8Byc@iww|fEWs& z4iAf?Juk;l0RYCiLIl8h)VubdM%6y>Ni@aWaF zbd`X~K^9t9xT-;K!~n}S=?%#msmGnRuvIEDrXxNMDH=`D@<)4fvG6hkd|_ju5$?lc zoYX6KbfU?qT7Qf9-pu%r`fia-o4xRlS-@;R_X^+x`jgANbKO{0E)z;L`4T73vdsPA z{!?`3!>pAeBJ*k#f395EZQAKW4iiyO z`!Rd`TeiDI^gd<-rCHo*_+vT5diQN;Xsvch@~z^;*FYzNL3@#4$o)T}$S-Mf`$t|z zlc6Tx(P-K@vBLO#S@vkht8+~Ve z#hfy1)UV8>6Xu$S6xgmh(#T!AsIo>N8DXVTI@l`c*w?L(r4=nbGjOs5Nmu#6QTH<%GrHIk9_L3>0;|g-US9+C}K?PLLX#6q$hRbBCuJ%RFC&yamw99)=Zb9;07M5Z<45GsYW!$BUVR14qYdb^qy-*Q2 zPWKF4!5k6C&+KT?19$Py@%yUDkw2-2WS7qdU6<4RUZV^ZY;7Nf%pD(m~BNrJ!oeV1IxC;pZ`k1YZ?{mqhf}gD*lYI7td57h*-P34oCuz1<0; zhL!pp}vCil#H5ckVr)8oS1eRb=t-U|CPVmoRxFGUU~D*rO1P|OCs zv&g>6MkkN@+I1}T1R)jEnfso7Ba&)A2p-!Nwm7+y;22o2-{dwoAh<#u={YcBRJ5Tx z2jRCKhYE)`t-;33!I13*f^u(RKK)6X@Au|SwTH8gc15-+r-_GCU$u~S69$+ExPv7K z8~wLvO&>j4Zll0w`Q{@3D~Os=tLh_7h=#jQwD?n01}#S!v@-lF(<5v)_e8bF6}7)>(IevEi+r4WQXG8g~=Q z%ytvWy?wIl0lKZ<1fB1E!e3ovp9G`1e)|*R;Q5tRtB-RuxS#9u6AJLS-7h+O^(jY7 z0;yYuLIs!Xevth$>Gs0H2Xo{WlBJziD#|TnX&ceZMV3ZRJh-dahxIhD zn_Dw@r~F1AH$6=#Lf*|Eif!h>U{5iCeQ%DTcDoAJE3TB6@^T3v{S)DdgJnN>rz#b^ zMEYlC#ev1QpxDM~*pW4v9qYtQ#Ak=(1@aUWTIBGusR2BjARS$cgU6}G;c?0h#h;GE z;Pkki9d#GHjw=F&=-ou9M($@E@wpxtPmyOIVej!p?Ez|R_f8vT^wtnAyXu*XsHQIc z$I3XVRwZKNF1d?LKTZ|GU-Uq_F38wc$b7IY;<4?!V=(^Ebm#8m{&^djkF4TGwtnD? zc`SDUBZiQA$j3$`2Ehd}feKq;8uI0-wL_~-9x{+bMQWgCerGc5yy_e3yTj$jv0KSp zreMK?!!pk(6miWmB`Luu4HXiJ`T5ApMYd@6-9!r)PJi zjY0Mnz60pITzR{HwHK0`TTsqh;$a!2qZ5MVoec<>fJdQfCc991uOB&iiOr4w45GAo zZ&kr90iH0*FEdCW^vT$H#J*~)M^KTvg}mLsdK}uHAKj$9dgLRgiz>SFrKRWq|G*RF z5!;nn9iW30l02oJ{s5jTY|!!0@Mzab38$^9fqw27JKwo#wn>lmT-lhxPEzOzb#-#A zOwt$ernFkaiFi;Zf`#VV9r|Fp0mH*iwVijOzCyj9fiYPer|gIF8tFNy7(+acv2Z`bDDEZ5f-S%^fB*{%#qnkYw`-eo=gEEp=WQ- zAcF{1HqHl2H9uq}|JL|Ew8Gigjp=$l>nd}C+e+qfw&82k>@$2&rO@M*lU1c`!=ZA{ z-<})32GMciVcL)??Z=B<%{3YUD8hPUV^C2^8JX3uLvkCP>8IcN^5-5YbmsV#*{%fJ z2A>WmgR`Ewh}~}N>i91*IO$yefX7ILVd&z2U5jn=Zq+^E>F|0UN#$EC5wpu}ZEH%` zMCr$Als~40y0Z=LnUdrv5Dp2^m3UyfmFT#cXDE$H)Ue$yUU)5D$!hbYkU=!|WmURFUg73U&H^VNi7zKEKyxbJ9l z);(OrNwpXEy!=D^2*FIh+V~`1c9&xjjisCqCoyH1c6Qw99db~fEqUFWwNkTiYq9+1 z6&c=&Hw^>zb%NEot+^OW16W;DwflwTbQc8`bS*sU7rRtO!1XG?% z3q#%f*{Q@06Ti*)QSXeEb>4meR%;f3pBvSvBJ(OAo74Reh0}rGe=K!-0rvAH_c-^OlZ*$;f3G!Q z)M(XjLP)d!5PuIwYHu_*d#P7p`~lyfpJ_Wz>#Bnb-d3iRZ|^zi?D;27$XiHtH$;bn zw8WDy+F=tB*1?q?`&T!#%rQpkcrPgLDVSSn=1pdf`Mc$=7nB!d7p>$bNq3$n>`q0Y zu)B|m$4ANq^o$tD@RM@Oo@T_!ctbTSximktwOS`CKZLE+#tWZ56hu6Ul5%yJYcqNt zIMo6m4kiAWBOH<~Jfh&V$+E~$&dzFSyl`4jSzkq}ug+v#FSDm%r^?7SEzK78u9}rE z9&p~L7D?ewB;?9E;Amjr7HdN*6^+?LjTfmTnPt?9#OhD6zM)kH9Q-2Z@hp@>eiP!r zL%$^)#Fyd$3AkU_BQE*vV-2{?%#t~{_X0q#`gi4RzhYCGLy-OtzkdAEQABkQBBnb&P6 zRMxtPz(Phg#if6I>|P4G4831xW})JA6iLxc*Epym%gyNIPbKU@?7x;g!CjFn!_q89 zmbz#$A;@01G6^;b7V;z&VuT`54)}*}c|sIgKoYc{*Xl%n0ry{Cd(2nLW-l>)N~VfH zzldBDbd%=wD`yRaZsm-rJS5VLT_-YJk=q^^a>b8(uns{)z&CQ3ReY>X*ZWlNMz$Dv zGARzDH(Dj+)K0@#6>Mi?q3R~0GqJKvMXjkjFp}olYe$3g;_kDz27~=eRTZy?J{k|63gF zlCnZ+o>9^=IgZVPAG#WB69s%r!jW?EktVBQDlnjblfjEvGX@2WeZsr%Q=_f`$!SaU zG(q>my*D#s2}yCrJNOZ%k60{nJxIUrsgjRmj=|MP3$3ssJb!HON$_&gGN|2Nn@KF4 zgAVGywgJW@O6cMccYVL-$RZBiWiP0EZ}Dcf<#n9AkpY4JPWE1;|4=>-?xf-n4j{+B z1OkTm9|+E@qxWffOy3LOfk`+czzBqcD9jP!Bq}cMWG@Q*#}EaIBR~>RB*Naw9+qjv z;`N^y_gEAtz@k8eu{c~(0wD=PWJzo+{~o0VdiFi~s-t delta 6217 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