zlib 1.2.0.8
This commit is contained in:
		
							
								
								
									
										21
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								ChangeLog
									
									
									
									
									
								
							| @@ -1,6 +1,25 @@ | |||||||
|  |  | ||||||
|                 ChangeLog file for zlib |                 ChangeLog file for zlib | ||||||
|  |  | ||||||
|  | Changes in 1.2.0.8 (4 November 2003) | ||||||
|  | - Update version in contrib/delphi/ZLib.pas and contrib/pascal/zlibpas.pas | ||||||
|  | - Add experimental NO_DIVIDE #define in adler32.c | ||||||
|  |     - Possibly faster on some processors (let me know if it is) | ||||||
|  | - Correct Z_BLOCK to not return on first inflate call if no wrap | ||||||
|  | - Fix strm->data_type on inflate() return to correctly indicate EOB | ||||||
|  | - Add deflatePrime() function for appending in the middle of a byte | ||||||
|  | - Add contrib/gzappend for an example of appending to a stream | ||||||
|  | - Update win32/DLL_FAQ.txt [Truta] | ||||||
|  | - Delete Turbo C comment in README [Truta] | ||||||
|  | - Improve some indentation in zconf.h [Truta] | ||||||
|  | - Fix infinite loop on bad input in configure script [Church] | ||||||
|  | - Fix gzeof() for concatenated gzip files [Johnson] | ||||||
|  | - Add example to contrib/visual-basic.txt [Michael B.] | ||||||
|  | - Add -p to mkdir's in Makefile.in [vda] | ||||||
|  | - Fix configure to properly detect presence or lack of printf functions | ||||||
|  | - Add AS400 support [Monnerat] | ||||||
|  | - Added a little Cygwin support [Wilson] | ||||||
|  |  | ||||||
| Changes in 1.2.0.7 (21 September 2003) | Changes in 1.2.0.7 (21 September 2003) | ||||||
| - Correct some debug formats in contrib/infback9 | - Correct some debug formats in contrib/infback9 | ||||||
| - Cast a type in a debug statement in trees.c | - Cast a type in a debug statement in trees.c | ||||||
| @@ -10,7 +29,7 @@ Changes in 1.2.0.7 (21 September 2003) | |||||||
| - Remove some directories in old that have been updated to 1.2 | - Remove some directories in old that have been updated to 1.2 | ||||||
| - Add dylib building for Mac OS X in configure and Makefile.in | - Add dylib building for Mac OS X in configure and Makefile.in | ||||||
| - Remove old distribution stuff from Makefile | - Remove old distribution stuff from Makefile | ||||||
| - Update README to point for DLL_FAQ.txt, and add comment on Mac OS X | - Update README to point to DLL_FAQ.txt, and add comment on Mac OS X | ||||||
| - Update links in README | - Update links in README | ||||||
|  |  | ||||||
| Changes in 1.2.0.6 (13 September 2003) | Changes in 1.2.0.6 (13 September 2003) | ||||||
|   | |||||||
							
								
								
									
										20
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								Makefile
									
									
									
									
									
								
							| @@ -30,13 +30,14 @@ CPP=$(CC) -E | |||||||
|  |  | ||||||
| LIBS=libz.a | LIBS=libz.a | ||||||
| SHAREDLIB=libz.so | SHAREDLIB=libz.so | ||||||
| SHAREDLIBV=libz.so.1.2.0.7 | SHAREDLIBV=libz.so.1.2.0.8 | ||||||
| SHAREDLIBM=libz.so.1 | SHAREDLIBM=libz.so.1 | ||||||
|  |  | ||||||
| AR=ar rc | AR=ar rc | ||||||
| RANLIB=ranlib | RANLIB=ranlib | ||||||
| TAR=tar | TAR=tar | ||||||
| SHELL=/bin/sh | SHELL=/bin/sh | ||||||
|  | EXE= | ||||||
|  |  | ||||||
| prefix = /usr/local | prefix = /usr/local | ||||||
| exec_prefix = ${prefix} | exec_prefix = ${prefix} | ||||||
| @@ -53,7 +54,7 @@ OBJA = | |||||||
|  |  | ||||||
| TEST_OBJS = example.o minigzip.o | TEST_OBJS = example.o minigzip.o | ||||||
|  |  | ||||||
| all: example minigzip | all: example$(EXE) minigzip$(EXE) | ||||||
|  |  | ||||||
| check: test | check: test | ||||||
| test: all | test: all | ||||||
| @@ -82,17 +83,17 @@ $(SHAREDLIBV): $(OBJS) | |||||||
| 	ln -s $@ $(SHAREDLIB) | 	ln -s $@ $(SHAREDLIB) | ||||||
| 	ln -s $@ $(SHAREDLIBM) | 	ln -s $@ $(SHAREDLIBM) | ||||||
|  |  | ||||||
| example: example.o $(LIBS) | example$(EXE): example.o $(LIBS) | ||||||
| 	$(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS) | 	$(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS) | ||||||
|  |  | ||||||
| minigzip: minigzip.o $(LIBS) | minigzip$(EXE): minigzip.o $(LIBS) | ||||||
| 	$(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS) | 	$(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS) | ||||||
|  |  | ||||||
| install: $(LIBS) | install: $(LIBS) | ||||||
| 	-@if [ ! -d $(exec_prefix) ]; then mkdir $(exec_prefix); fi | 	-@if [ ! -d $(exec_prefix) ]; then mkdir -p $(exec_prefix); fi | ||||||
| 	-@if [ ! -d $(includedir)  ]; then mkdir $(includedir); fi | 	-@if [ ! -d $(includedir)  ]; then mkdir -p $(includedir); fi | ||||||
| 	-@if [ ! -d $(libdir)      ]; then mkdir $(libdir); fi | 	-@if [ ! -d $(libdir)      ]; then mkdir -p $(libdir); fi | ||||||
| 	-@if [ ! -d $(man3dir)     ]; then mkdir $(man3dir); fi | 	-@if [ ! -d $(man3dir)     ]; then mkdir -p $(man3dir); fi | ||||||
| 	cp zlib.h zconf.h $(includedir) | 	cp zlib.h zconf.h $(includedir) | ||||||
| 	chmod 644 $(includedir)/zlib.h $(includedir)/zconf.h | 	chmod 644 $(includedir)/zlib.h $(includedir)/zconf.h | ||||||
| 	cp $(LIBS) $(libdir) | 	cp $(LIBS) $(libdir) | ||||||
| @@ -119,7 +120,8 @@ uninstall: | |||||||
|  |  | ||||||
| mostlyclean: clean | mostlyclean: clean | ||||||
| clean: | clean: | ||||||
| 	rm -f *.o *~ example minigzip libz.* foo.gz so_locations \ | 	rm -f *.o *~ example$(EXE) minigzip$(EXE) \ | ||||||
|  | 	   libz.* foo.gz so_locations \ | ||||||
| 	   _match.s maketree contrib/infback9/*.o | 	   _match.s maketree contrib/infback9/*.o | ||||||
|  |  | ||||||
| maintainer-clean: distclean | maintainer-clean: distclean | ||||||
|   | |||||||
							
								
								
									
										20
									
								
								Makefile.in
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								Makefile.in
									
									
									
									
									
								
							| @@ -30,13 +30,14 @@ CPP=$(CC) -E | |||||||
|  |  | ||||||
| LIBS=libz.a | LIBS=libz.a | ||||||
| SHAREDLIB=libz.so | SHAREDLIB=libz.so | ||||||
| SHAREDLIBV=libz.so.1.2.0.7 | SHAREDLIBV=libz.so.1.2.0.8 | ||||||
| SHAREDLIBM=libz.so.1 | SHAREDLIBM=libz.so.1 | ||||||
|  |  | ||||||
| AR=ar rc | AR=ar rc | ||||||
| RANLIB=ranlib | RANLIB=ranlib | ||||||
| TAR=tar | TAR=tar | ||||||
| SHELL=/bin/sh | SHELL=/bin/sh | ||||||
|  | EXE= | ||||||
|  |  | ||||||
| prefix = /usr/local | prefix = /usr/local | ||||||
| exec_prefix = ${prefix} | exec_prefix = ${prefix} | ||||||
| @@ -53,7 +54,7 @@ OBJA = | |||||||
|  |  | ||||||
| TEST_OBJS = example.o minigzip.o | TEST_OBJS = example.o minigzip.o | ||||||
|  |  | ||||||
| all: example minigzip | all: example$(EXE) minigzip$(EXE) | ||||||
|  |  | ||||||
| check: test | check: test | ||||||
| test: all | test: all | ||||||
| @@ -82,17 +83,17 @@ $(SHAREDLIBV): $(OBJS) | |||||||
| 	ln -s $@ $(SHAREDLIB) | 	ln -s $@ $(SHAREDLIB) | ||||||
| 	ln -s $@ $(SHAREDLIBM) | 	ln -s $@ $(SHAREDLIBM) | ||||||
|  |  | ||||||
| example: example.o $(LIBS) | example$(EXE): example.o $(LIBS) | ||||||
| 	$(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS) | 	$(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS) | ||||||
|  |  | ||||||
| minigzip: minigzip.o $(LIBS) | minigzip$(EXE): minigzip.o $(LIBS) | ||||||
| 	$(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS) | 	$(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS) | ||||||
|  |  | ||||||
| install: $(LIBS) | install: $(LIBS) | ||||||
| 	-@if [ ! -d $(exec_prefix) ]; then mkdir $(exec_prefix); fi | 	-@if [ ! -d $(exec_prefix) ]; then mkdir -p $(exec_prefix); fi | ||||||
| 	-@if [ ! -d $(includedir)  ]; then mkdir $(includedir); fi | 	-@if [ ! -d $(includedir)  ]; then mkdir -p $(includedir); fi | ||||||
| 	-@if [ ! -d $(libdir)      ]; then mkdir $(libdir); fi | 	-@if [ ! -d $(libdir)      ]; then mkdir -p $(libdir); fi | ||||||
| 	-@if [ ! -d $(man3dir)     ]; then mkdir $(man3dir); fi | 	-@if [ ! -d $(man3dir)     ]; then mkdir -p $(man3dir); fi | ||||||
| 	cp zlib.h zconf.h $(includedir) | 	cp zlib.h zconf.h $(includedir) | ||||||
| 	chmod 644 $(includedir)/zlib.h $(includedir)/zconf.h | 	chmod 644 $(includedir)/zlib.h $(includedir)/zconf.h | ||||||
| 	cp $(LIBS) $(libdir) | 	cp $(LIBS) $(libdir) | ||||||
| @@ -119,7 +120,8 @@ uninstall: | |||||||
|  |  | ||||||
| mostlyclean: clean | mostlyclean: clean | ||||||
| clean: | clean: | ||||||
| 	rm -f *.o *~ example minigzip libz.* foo.gz so_locations \ | 	rm -f *.o *~ example$(EXE) minigzip$(EXE) \ | ||||||
|  | 	   libz.* foo.gz so_locations \ | ||||||
| 	   _match.s maketree contrib/infback9/*.o | 	   _match.s maketree contrib/infback9/*.o | ||||||
|  |  | ||||||
| maintainer-clean: distclean | maintainer-clean: distclean | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								README
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| ZLIB DATA COMPRESSION LIBRARY | ZLIB DATA COMPRESSION LIBRARY | ||||||
|  |  | ||||||
| zlib 1.2.0.7 is a general purpose data compression library.  All the code is | zlib 1.2.0.8 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 | thread safe.  The data format used by the zlib library is described by RFCs | ||||||
| (Request for Comments) 1950 to 1952 in the files | (Request for Comments) 1950 to 1952 in the files | ||||||
| http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) | http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) | ||||||
| @@ -34,7 +34,7 @@ Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997 | |||||||
| issue of  Dr. Dobb's Journal; a copy of the article is available in | issue of  Dr. Dobb's Journal; a copy of the article is available in | ||||||
| http://dogma.net/markn/articles/zlibtool/zlibtool.htm | http://dogma.net/markn/articles/zlibtool/zlibtool.htm | ||||||
|  |  | ||||||
| The changes made in version 1.2.0.7 are documented in the file ChangeLog. | The changes made in version 1.2.0.8 are documented in the file ChangeLog. | ||||||
|  |  | ||||||
| Unsupported third party contributions are provided in directory "contrib". | Unsupported third party contributions are provided in directory "contrib". | ||||||
|  |  | ||||||
| @@ -77,9 +77,6 @@ Notes for some targets: | |||||||
|  |  | ||||||
| - gzdopen is not supported on RISCOS, BEOS and by some Mac compilers. | - gzdopen is not supported on RISCOS, BEOS and by some Mac compilers. | ||||||
|  |  | ||||||
| - For Turbo C the small model is supported only with reduced performance to |  | ||||||
|   avoid any far allocation; it was tested with -DMAX_WBITS=11 -DMAX_MEM_LEVEL=3 |  | ||||||
|  |  | ||||||
| - For PalmOs, see http://palmzlib.sourceforge.net/ | - For PalmOs, see http://palmzlib.sourceforge.net/ | ||||||
|  |  | ||||||
| - When building a shared, i.e. dynamic library on Mac OS X, the library must be | - When building a shared, i.e. dynamic library on Mac OS X, the library must be | ||||||
|   | |||||||
							
								
								
									
										31
									
								
								adler32.c
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								adler32.c
									
									
									
									
									
								
							| @@ -8,7 +8,7 @@ | |||||||
| #define ZLIB_INTERNAL | #define ZLIB_INTERNAL | ||||||
| #include "zlib.h" | #include "zlib.h" | ||||||
|  |  | ||||||
| #define BASE 65521L /* largest prime smaller than 65536 */ | #define BASE 65521UL    /* largest prime smaller than 65536 */ | ||||||
| #define NMAX 5552 | #define NMAX 5552 | ||||||
| /* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ | /* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ | ||||||
|  |  | ||||||
| @@ -18,6 +18,31 @@ | |||||||
| #define DO8(buf,i)  DO4(buf,i); DO4(buf,i+4); | #define DO8(buf,i)  DO4(buf,i); DO4(buf,i+4); | ||||||
| #define DO16(buf)   DO8(buf,0); DO8(buf,8); | #define DO16(buf)   DO8(buf,0); DO8(buf,8); | ||||||
|  |  | ||||||
|  | #ifdef NO_DIVIDE | ||||||
|  | #  define MOD(a) \ | ||||||
|  |     do { \ | ||||||
|  |         if (a > (BASE << 16)) a -= (BASE << 16); \ | ||||||
|  |         if (a > (BASE << 15)) a -= (BASE << 15); \ | ||||||
|  |         if (a > (BASE << 14)) a -= (BASE << 14); \ | ||||||
|  |         if (a > (BASE << 13)) a -= (BASE << 13); \ | ||||||
|  |         if (a > (BASE << 12)) a -= (BASE << 12); \ | ||||||
|  |         if (a > (BASE << 11)) a -= (BASE << 11); \ | ||||||
|  |         if (a > (BASE << 10)) a -= (BASE << 10); \ | ||||||
|  |         if (a > (BASE << 9)) a -= (BASE << 9); \ | ||||||
|  |         if (a > (BASE << 8)) a -= (BASE << 8); \ | ||||||
|  |         if (a > (BASE << 7)) a -= (BASE << 7); \ | ||||||
|  |         if (a > (BASE << 6)) a -= (BASE << 6); \ | ||||||
|  |         if (a > (BASE << 5)) a -= (BASE << 5); \ | ||||||
|  |         if (a > (BASE << 4)) a -= (BASE << 4); \ | ||||||
|  |         if (a > (BASE << 3)) a -= (BASE << 3); \ | ||||||
|  |         if (a > (BASE << 2)) a -= (BASE << 2); \ | ||||||
|  |         if (a > (BASE << 1)) a -= (BASE << 1); \ | ||||||
|  |         if (a > BASE) a -= BASE; \ | ||||||
|  |     } while (0) | ||||||
|  | #else | ||||||
|  | #  define MOD(a) a %= BASE | ||||||
|  | #endif | ||||||
|  |  | ||||||
| /* ========================================================================= */ | /* ========================================================================= */ | ||||||
| uLong ZEXPORT adler32(adler, buf, len) | uLong ZEXPORT adler32(adler, buf, len) | ||||||
|     uLong adler; |     uLong adler; | ||||||
| @@ -42,8 +67,8 @@ uLong ZEXPORT adler32(adler, buf, len) | |||||||
|             s1 += *buf++; |             s1 += *buf++; | ||||||
|             s2 += s1; |             s2 += s1; | ||||||
|         } while (--k); |         } while (--k); | ||||||
|         s1 %= BASE; |         MOD(s1); | ||||||
|         s2 %= BASE; |         MOD(s2); | ||||||
|     } |     } | ||||||
|     return (s2 << 16) | s1; |     return (s2 << 16) | s1; | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										132
									
								
								as400/bndsrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								as400/bndsrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,132 @@ | |||||||
|  | STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('ZLIB') | ||||||
|  |  | ||||||
|  | /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ | ||||||
|  | /*   Version 1.1.3 entry points.                                    */ | ||||||
|  | /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ | ||||||
|  |  | ||||||
|  | /********************************************************************/ | ||||||
|  | /*   *MODULE      ADLER32      ZLIB         01/02/01  00:15:09      */ | ||||||
|  | /********************************************************************/ | ||||||
|  |  | ||||||
|  |   EXPORT SYMBOL("adler32") | ||||||
|  |  | ||||||
|  | /********************************************************************/ | ||||||
|  | /*   *MODULE      COMPRESS     ZLIB         01/02/01  00:15:09      */ | ||||||
|  | /********************************************************************/ | ||||||
|  |  | ||||||
|  |   EXPORT SYMBOL("compress") | ||||||
|  |   EXPORT SYMBOL("compress2") | ||||||
|  |  | ||||||
|  | /********************************************************************/ | ||||||
|  | /*   *MODULE      CRC32        ZLIB         01/02/01  00:15:09      */ | ||||||
|  | /********************************************************************/ | ||||||
|  |  | ||||||
|  |   EXPORT SYMBOL("crc32") | ||||||
|  |   EXPORT SYMBOL("get_crc_table") | ||||||
|  |  | ||||||
|  | /********************************************************************/ | ||||||
|  | /*   *MODULE      DEFLATE      ZLIB         01/02/01  00:15:09      */ | ||||||
|  | /********************************************************************/ | ||||||
|  |  | ||||||
|  |   EXPORT SYMBOL("deflate") | ||||||
|  |   EXPORT SYMBOL("deflateEnd") | ||||||
|  |   EXPORT SYMBOL("deflateSetDictionary") | ||||||
|  |   EXPORT SYMBOL("deflateCopy") | ||||||
|  |   EXPORT SYMBOL("deflateReset") | ||||||
|  |   EXPORT SYMBOL("deflateParams") | ||||||
|  |   EXPORT SYMBOL("deflatePrime") | ||||||
|  |   EXPORT SYMBOL("deflateInit_") | ||||||
|  |   EXPORT SYMBOL("deflateInit2_") | ||||||
|  |  | ||||||
|  | /********************************************************************/ | ||||||
|  | /*   *MODULE      GZIO         ZLIB         01/02/01  00:15:09      */ | ||||||
|  | /********************************************************************/ | ||||||
|  |  | ||||||
|  |   EXPORT SYMBOL("gzopen") | ||||||
|  |   EXPORT SYMBOL("gzdopen") | ||||||
|  |   EXPORT SYMBOL("gzsetparams") | ||||||
|  |   EXPORT SYMBOL("gzread") | ||||||
|  |   EXPORT SYMBOL("gzwrite") | ||||||
|  |   EXPORT SYMBOL("gzprintf") | ||||||
|  |   EXPORT SYMBOL("gzputs") | ||||||
|  |   EXPORT SYMBOL("gzgets") | ||||||
|  |   EXPORT SYMBOL("gzputc") | ||||||
|  |   EXPORT SYMBOL("gzgetc") | ||||||
|  |   EXPORT SYMBOL("gzflush") | ||||||
|  |   EXPORT SYMBOL("gzseek") | ||||||
|  |   EXPORT SYMBOL("gzrewind") | ||||||
|  |   EXPORT SYMBOL("gztell") | ||||||
|  |   EXPORT SYMBOL("gzeof") | ||||||
|  |   EXPORT SYMBOL("gzclose") | ||||||
|  |   EXPORT SYMBOL("gzerror") | ||||||
|  |  | ||||||
|  | /********************************************************************/ | ||||||
|  | /*   *MODULE      INFLATE      ZLIB         01/02/01  00:15:09      */ | ||||||
|  | /********************************************************************/ | ||||||
|  |  | ||||||
|  |   EXPORT SYMBOL("inflate") | ||||||
|  |   EXPORT SYMBOL("inflateEnd") | ||||||
|  |   EXPORT SYMBOL("inflateSetDictionary") | ||||||
|  |   EXPORT SYMBOL("inflateSync") | ||||||
|  |   EXPORT SYMBOL("inflateReset") | ||||||
|  |   EXPORT SYMBOL("inflateInit_") | ||||||
|  |   EXPORT SYMBOL("inflateInit2_") | ||||||
|  |   EXPORT SYMBOL("inflateSyncPoint") | ||||||
|  |  | ||||||
|  | /********************************************************************/ | ||||||
|  | /*   *MODULE      UNCOMPR      ZLIB         01/02/01  00:15:09      */ | ||||||
|  | /********************************************************************/ | ||||||
|  |  | ||||||
|  |   EXPORT SYMBOL("uncompress") | ||||||
|  |  | ||||||
|  | /********************************************************************/ | ||||||
|  | /*   *MODULE      ZUTIL        ZLIB         01/02/01  00:15:09      */ | ||||||
|  | /********************************************************************/ | ||||||
|  |  | ||||||
|  |   EXPORT SYMBOL("zlibVersion") | ||||||
|  |   EXPORT SYMBOL("zError") | ||||||
|  |  | ||||||
|  | /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ | ||||||
|  | /*   Version 1.2.0.7 additional entry points.                       */ | ||||||
|  | /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ | ||||||
|  |  | ||||||
|  | /********************************************************************/ | ||||||
|  | /*   *MODULE      COMPRESS     ZLIB         01/02/01  00:15:09      */ | ||||||
|  | /********************************************************************/ | ||||||
|  |  | ||||||
|  |   EXPORT SYMBOL("compressBound") | ||||||
|  |  | ||||||
|  | /********************************************************************/ | ||||||
|  | /*   *MODULE      DEFLATE      ZLIB         01/02/01  00:15:09      */ | ||||||
|  | /********************************************************************/ | ||||||
|  |  | ||||||
|  |   EXPORT SYMBOL("deflateBound") | ||||||
|  |  | ||||||
|  | /********************************************************************/ | ||||||
|  | /*   *MODULE      GZIO         ZLIB         01/02/01  00:15:09      */ | ||||||
|  | /********************************************************************/ | ||||||
|  |  | ||||||
|  |   EXPORT SYMBOL("gzungetc") | ||||||
|  |   EXPORT SYMBOL("gzclearerr") | ||||||
|  |  | ||||||
|  | /********************************************************************/ | ||||||
|  | /*   *MODULE      INFBACK      ZLIB         01/02/01  00:15:09      */ | ||||||
|  | /********************************************************************/ | ||||||
|  |  | ||||||
|  |   EXPORT SYMBOL("inflateBack") | ||||||
|  |   EXPORT SYMBOL("inflateBackEnd") | ||||||
|  |   EXPORT SYMBOL("inflateBackInit_") | ||||||
|  |  | ||||||
|  | /********************************************************************/ | ||||||
|  | /*   *MODULE      INFLATE      ZLIB         01/02/01  00:15:09      */ | ||||||
|  | /********************************************************************/ | ||||||
|  |  | ||||||
|  |   EXPORT SYMBOL("inflateCopy") | ||||||
|  |  | ||||||
|  | /********************************************************************/ | ||||||
|  | /*   *MODULE      ZUTIL        ZLIB         01/02/01  00:15:09      */ | ||||||
|  | /********************************************************************/ | ||||||
|  |  | ||||||
|  |   EXPORT SYMBOL("zlibCompileFlags") | ||||||
|  |  | ||||||
|  | ENDPGMEXP | ||||||
							
								
								
									
										123
									
								
								as400/compile.clp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								as400/compile.clp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,123 @@ | |||||||
|  | /******************************************************************************/ | ||||||
|  | /*                                                                            */ | ||||||
|  | /*  ZLIB                                                                      */ | ||||||
|  | /*                                                                            */ | ||||||
|  | /*    Compile sources into modules and link them into a service program.      */ | ||||||
|  | /*                                                                            */ | ||||||
|  | /******************************************************************************/ | ||||||
|  |  | ||||||
|  |              PGM | ||||||
|  |  | ||||||
|  | /*      Configuration adjustable parameters.                                  */ | ||||||
|  |  | ||||||
|  |              DCL        VAR(&SRCLIB) TYPE(*CHAR) LEN(10) + | ||||||
|  |                           VALUE('ZLIB')                         /* Source library. */ | ||||||
|  |              DCL        VAR(&SRCFILE) TYPE(*CHAR) LEN(10) + | ||||||
|  |                           VALUE('SOURCES')                      /* Source member file. */ | ||||||
|  |              DCL        VAR(&CTLFILE) TYPE(*CHAR) LEN(10) + | ||||||
|  |                           VALUE('TOOLS')                        /* Control member file. */ | ||||||
|  |  | ||||||
|  |              DCL        VAR(&MODLIB) TYPE(*CHAR) LEN(10) + | ||||||
|  |                           VALUE('ZLIB')                         /* Module library. */ | ||||||
|  |  | ||||||
|  |              DCL        VAR(&SRVLIB) TYPE(*CHAR) LEN(10) + | ||||||
|  |                           VALUE('LGPL')                         /* Service program library. */ | ||||||
|  |  | ||||||
|  |              DCL        VAR(&CFLAGS) TYPE(*CHAR) + | ||||||
|  |                           VALUE('OPTIMIZE(40)')                 /* Compile options. */ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /*      Working storage.                                                      */ | ||||||
|  |  | ||||||
|  |              DCL        VAR(&CMDLEN) TYPE(*DEC) LEN(15 5) VALUE(300)    /* Command length. */ | ||||||
|  |              DCL        VAR(&CMD) TYPE(*CHAR) LEN(512) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /*      Compile sources into modules.                                         */ | ||||||
|  |  | ||||||
|  |              CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  + | ||||||
|  |                         '/ADLER32)               SRCFILE(' *TCAT               + | ||||||
|  |                         &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 + | ||||||
|  |                         ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS) | ||||||
|  |              CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN) | ||||||
|  |  | ||||||
|  |              CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  + | ||||||
|  |                         '/COMPRESS)              SRCFILE(' *TCAT               + | ||||||
|  |                         &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 + | ||||||
|  |                         ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS) | ||||||
|  |              CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN) | ||||||
|  |  | ||||||
|  |              CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  + | ||||||
|  |                         '/CRC32)                 SRCFILE(' *TCAT               + | ||||||
|  |                         &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 + | ||||||
|  |                         ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS) | ||||||
|  |              CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN) | ||||||
|  |  | ||||||
|  |              CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  + | ||||||
|  |                         '/DEFLATE)               SRCFILE(' *TCAT               + | ||||||
|  |                         &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 + | ||||||
|  |                         ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS) | ||||||
|  |              CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN) | ||||||
|  |  | ||||||
|  |              CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  + | ||||||
|  |                         '/GZIO)                  SRCFILE(' *TCAT               + | ||||||
|  |                         &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 + | ||||||
|  |                         ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS) | ||||||
|  |              CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN) | ||||||
|  |  | ||||||
|  |              CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  + | ||||||
|  |                         '/INFBACK)               SRCFILE(' *TCAT               + | ||||||
|  |                         &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 + | ||||||
|  |                         ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS) | ||||||
|  |              CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN) | ||||||
|  |  | ||||||
|  |              CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  + | ||||||
|  |                         '/INFFAST)               SRCFILE(' *TCAT               + | ||||||
|  |                         &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 + | ||||||
|  |                         ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS) | ||||||
|  |              CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN) | ||||||
|  |  | ||||||
|  |              CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  + | ||||||
|  |                         '/INFLATE)               SRCFILE(' *TCAT               + | ||||||
|  |                         &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 + | ||||||
|  |                         ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS) | ||||||
|  |              CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN) | ||||||
|  |  | ||||||
|  |              CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  + | ||||||
|  |                         '/INFTREES)              SRCFILE(' *TCAT               + | ||||||
|  |                         &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 + | ||||||
|  |                         ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS) | ||||||
|  |              CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN) | ||||||
|  |  | ||||||
|  |              CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  + | ||||||
|  |                         '/TREES)                 SRCFILE(' *TCAT               + | ||||||
|  |                         &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 + | ||||||
|  |                         ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS) | ||||||
|  |              CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN) | ||||||
|  |  | ||||||
|  |              CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  + | ||||||
|  |                         '/UNCOMPR)               SRCFILE(' *TCAT               + | ||||||
|  |                         &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 + | ||||||
|  |                         ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS) | ||||||
|  |              CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN) | ||||||
|  |  | ||||||
|  |              CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  + | ||||||
|  |                         '/ZUTIL)                 SRCFILE(' *TCAT               + | ||||||
|  |                         &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 + | ||||||
|  |                         ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS) | ||||||
|  |              CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /*      Link modules into a service program.                                  */ | ||||||
|  |  | ||||||
|  |              CRTSRVPGM  SRVPGM(&SRVLIB/ZLIB) + | ||||||
|  |                           MODULE(&MODLIB/ADLER32     &MODLIB/COMPRESS    + | ||||||
|  |                                  &MODLIB/CRC32       &MODLIB/DEFLATE     + | ||||||
|  |                                  &MODLIB/GZIO        &MODLIB/INFBACK     + | ||||||
|  |                                  &MODLIB/INFFAST     &MODLIB/INFLATE     + | ||||||
|  |                                  &MODLIB/INFTREES    &MODLIB/TREES       + | ||||||
|  |                                  &MODLIB/UNCOMPR     &MODLIB/ZUTIL)      + | ||||||
|  |                           SRCFILE(&SRCLIB/&CTLFILE) SRCMBR(BNDSRC) + | ||||||
|  |                           TEXT('ZLIB 1.2.0.7') TGTRLS(V4R4M0) | ||||||
|  |  | ||||||
|  |              ENDPGM | ||||||
							
								
								
									
										111
									
								
								as400/readme.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								as400/readme.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,111 @@ | |||||||
|  |         ZLIB version 1.2.0.7 for AS400 installation instructions | ||||||
|  |  | ||||||
|  | I) From an AS400 *SAVF file: | ||||||
|  |  | ||||||
|  | 1)      Unpacking archive to an AS400 save file | ||||||
|  |  | ||||||
|  | On the AS400: | ||||||
|  |  | ||||||
|  | _       Create the ZLIB AS400 library: | ||||||
|  |  | ||||||
|  |         CRTLIB LIB(ZLIB) TYPE(PROD) TEXT('ZLIB compression API library') | ||||||
|  |  | ||||||
|  | _       Create a work save file, for example: | ||||||
|  |  | ||||||
|  |                 CRTSAVF FILE(ZLIB/ZLIBSAVF) | ||||||
|  |  | ||||||
|  | On a PC connected to the target AS400: | ||||||
|  |  | ||||||
|  | _       Unpack the save file image to a PC file "ZLIBSAVF" | ||||||
|  | _       Upload this file into the save file on the AS400, for example | ||||||
|  |                 using ftp in BINARY mode. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 2)      Populating the ZLIB AS400 source library | ||||||
|  |  | ||||||
|  | On the AS400: | ||||||
|  |  | ||||||
|  | _       Extract the saved objects into the ZLIB AS400 library using: | ||||||
|  |  | ||||||
|  | RSTOBJ OBJ(*ALL) SAVLIB(ZLIB) DEV(*SAVF) SAVF(ZLIB/ZLIBSAVF) RSTLIB(ZLIB) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 3)      Customize installation: | ||||||
|  |  | ||||||
|  | _       Edit CL member ZLIB/TOOLS(COMPILE) and change parameters if needed, | ||||||
|  |                 according to the comments. | ||||||
|  |  | ||||||
|  | _       Compile this member with: | ||||||
|  |  | ||||||
|  |         CRTCLPGM PGM(ZLIB/COMPILE) SRCFILE(ZLIB/TOOLS) SRCMBR(COMPILE) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 4)      Compile and generate the service program: | ||||||
|  |  | ||||||
|  | _       This can now be done by executing: | ||||||
|  |  | ||||||
|  |         CALL PGM(ZLIB/COMPILE) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | II) From the original source distribution: | ||||||
|  |  | ||||||
|  | 1)      On the AS400, create the source library: | ||||||
|  |  | ||||||
|  |         CRTLIB LIB(ZLIB) TYPE(PROD) TEXT('ZLIB compression API library') | ||||||
|  |  | ||||||
|  | 2)      Create the source files: | ||||||
|  |  | ||||||
|  |         CRTSRCPF FILE(ZLIB/SOURCES) RCDLEN(112) TEXT('ZLIB library modules') | ||||||
|  |         CRTSRCPF FILE(ZLIB/H)       RCDLEN(112) TEXT('ZLIB library includes') | ||||||
|  |         CRTSRCPF FILE(ZLIB/TOOLS)   RCDLEN(112) TEXT('ZLIB library control utilities') | ||||||
|  |  | ||||||
|  | 3)      From the machine hosting the distribution files, upload them (with | ||||||
|  |                 FTP in text mode, for example) according to the following table: | ||||||
|  |  | ||||||
|  |     Original    AS400   AS400    AS400 AS400 | ||||||
|  |     file        file    member   type  description | ||||||
|  |                 SOURCES                Original ZLIB C subprogram sources | ||||||
|  |     adler32.c           ADLER32  C     ZLIB - Compute the Adler-32 checksum of a dta strm | ||||||
|  |     compress.c          COMPRESS C     ZLIB - Compress a memory buffer | ||||||
|  |     crc32.c             CRC32    C     ZLIB - Compute the CRC-32 of a data stream | ||||||
|  |     deflate.c           DEFLATE  C     ZLIB - Compress data using the deflation algorithm | ||||||
|  |     gzio.c              GZIO     C     ZLIB - IO on .gz files | ||||||
|  |     infback.c           INFBACK  C     ZLIB - Inflate using a callback interface | ||||||
|  |     inffast.c           INFFAST  C     ZLIB - Fast proc. literals & length/distance pairs | ||||||
|  |     inflate.c           INFLATE  C     ZLIB - Interface to inflate modules | ||||||
|  |     inftrees.c          INFTREES C     ZLIB - Generate Huffman trees for efficient decode | ||||||
|  |     trees.c             TREES    C     ZLIB - Output deflated data using Huffman coding | ||||||
|  |     uncompr.c           UNCOMPR  C     ZLIB - Decompress a memory buffer | ||||||
|  |     zutil.c             ZUTIL    C     ZLIB - Target dependent utility functions | ||||||
|  |                 H                      Original ZLIB C and ILE/RPG include files | ||||||
|  |     crc32.h             CRC32    C     ZLIB - CRC32 tables | ||||||
|  |     deflate.h           DEFLATE  C     ZLIB - Internal compression state | ||||||
|  |     inffast.h           INFFAST  C     ZLIB - Header to use inffast.c | ||||||
|  |     inffixed.h          INFFIXED C     ZLIB - Table for decoding fixed codes | ||||||
|  |     inflate.h           INFLATE  C     ZLIB - Internal inflate state definitions | ||||||
|  |     inftrees.h          INFTREES C     ZLIB - Header to use inftrees.c | ||||||
|  |     trees.h             TREES    C     ZLIB - Created automatically with -DGEN_TREES_H | ||||||
|  |     zconf.h             ZCONF    C     ZLIB - Compression library configuration | ||||||
|  |     zlib.h              ZLIB     C     ZLIB - Compression library C user interface | ||||||
|  |     as400/zlib.inc      ZLIB.INC RPGLE ZLIB - Compression library ILE RPG user interface | ||||||
|  |     zutil.h             ZUTIL    C     ZLIB - Internal interface and configuration | ||||||
|  |                 TOOLS                  Building source software & AS/400 README | ||||||
|  |     as400/bndsrc        BNDSRC         Entry point exportation list | ||||||
|  |     as400/compile.clp   COMPILE  CLP   Compile sources & generate service program | ||||||
|  |     as400/readme.txt    README   TXT   Installation instructions | ||||||
|  |  | ||||||
|  | 4)      Continue as in I)3). | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Notes:  For AS400 ILE RPG programmers, a /copy member defining the ZLIB | ||||||
|  |                 API prototypes for ILE RPG can be found in ZLIB/H(ZLIB.INC). | ||||||
|  |                 Please read comments in this member for more information. | ||||||
|  |  | ||||||
|  |         Remember that most foreign textual data are ASCII coded: this | ||||||
|  |                 implementation does not handle conversion from/to ASCII, so | ||||||
|  |                 text data code conversions must be done explicitely. | ||||||
|  |  | ||||||
|  |         Always open zipped files in binary mode. | ||||||
							
								
								
									
										327
									
								
								as400/zlib.inc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										327
									
								
								as400/zlib.inc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,327 @@ | |||||||
|  |       *  ZLIB.INC - Interface to the general purpose compression library | ||||||
|  |       * | ||||||
|  |       *  ILE RPG400 version by Patrick Monnerat, DATASPHERE. | ||||||
|  |       *  Version 1.2.0.7 | ||||||
|  |       * | ||||||
|  |       * | ||||||
|  |       *  WARNING: | ||||||
|  |       *     Procedures inflateInit(), inflateInit2(), deflateInit(), | ||||||
|  |       *         deflateInit2() and inflateBackInit() need to be called with | ||||||
|  |       *         two additional arguments: | ||||||
|  |       *         the package version string and the stream control structure. | ||||||
|  |       *         size. This is needed because RPG lacks some macro feature. | ||||||
|  |       *         Call these procedures as: | ||||||
|  |       *             inflateInit(...: ZLIB_VERSION: %size(z_stream)) | ||||||
|  |       * | ||||||
|  |       /if not defined(ZLIB_H_) | ||||||
|  |       /define ZLIB_H_ | ||||||
|  |       * | ||||||
|  |       ************************************************************************** | ||||||
|  |       *                               Constants | ||||||
|  |       ************************************************************************** | ||||||
|  |       * | ||||||
|  |      D ZLIB_VERSION    C                   '1.2.0.8'                            Header's version | ||||||
|  |      D ZLIB_VERNUM     C                   X'1208' | ||||||
|  |       * | ||||||
|  |      D Z_NO_FLUSH      C                   0 | ||||||
|  |      D Z_SYNC_FLUSH    C                   2 | ||||||
|  |      D Z_FULL_FLUSH    C                   3 | ||||||
|  |      D Z_FINISH        C                   4 | ||||||
|  |      D Z_BLOCK         C                   5 | ||||||
|  |       * | ||||||
|  |      D Z_OK            C                   0 | ||||||
|  |      D Z_STREAM_END    C                   1 | ||||||
|  |      D Z_NEED_DICT     C                   2 | ||||||
|  |      D Z_ERRNO         C                   -1 | ||||||
|  |      D Z_STREAM_ERROR  C                   -2 | ||||||
|  |      D Z_DATA_ERROR    C                   -3 | ||||||
|  |      D Z_MEM_ERROR     C                   -4 | ||||||
|  |      D Z_BUF_ERROR     C                   -5 | ||||||
|  |      DZ_VERSION_ERROR  C                   -6 | ||||||
|  |       * | ||||||
|  |      D Z_NO_COMPRESSION... | ||||||
|  |      D                 C                   0 | ||||||
|  |      D Z_BEST_SPEED    C                   1 | ||||||
|  |      D Z_BEST_COMPRESSION... | ||||||
|  |      D                 C                   9 | ||||||
|  |      D Z_DEFAULT_COMPRESSION... | ||||||
|  |      D                 C                   -1 | ||||||
|  |       * | ||||||
|  |      D Z_FILTERED      C                   1 | ||||||
|  |      D Z_HUFFMAN_ONLY  C                   2 | ||||||
|  |      D Z_RLE           C                   3 | ||||||
|  |      D Z_DEFAULT_STRATEGY... | ||||||
|  |      D                 C                   0 | ||||||
|  |       * | ||||||
|  |      D Z_BINARY        C                   0 | ||||||
|  |      D Z_ASCII         C                   1 | ||||||
|  |      D Z_UNKNOWN       C                   2 | ||||||
|  |       * | ||||||
|  |      D Z_DEFLATED      C                   8 | ||||||
|  |       * | ||||||
|  |      D Z_NULL          C                   0 | ||||||
|  |       * | ||||||
|  |       ************************************************************************** | ||||||
|  |       *                                 Types | ||||||
|  |       ************************************************************************** | ||||||
|  |       * | ||||||
|  |      D z_streamp       S               *                                        Stream struct ptr | ||||||
|  |      D gzFile          S               *                                        File pointer | ||||||
|  |      D z_off_t         S             10i 0                                      Stream offsets | ||||||
|  |       * | ||||||
|  |       ************************************************************************** | ||||||
|  |       *                               Structures | ||||||
|  |       ************************************************************************** | ||||||
|  |       * | ||||||
|  |       *  The GZIP encode/decode stream support structure. | ||||||
|  |       * | ||||||
|  |      D z_stream        DS                  align based(z_streamp) | ||||||
|  |      D  zs_next_in                     *                                        Next input byte | ||||||
|  |      D  zs_avail_in                  10U 0                                      Byte cnt at next_in | ||||||
|  |      D  zs_total_in                  10U 0                                      Total bytes read | ||||||
|  |      D  zs_next_out                    *                                        Output buffer ptr | ||||||
|  |      D  zs_avail_out                 10U 0                                      Room left @ next_out | ||||||
|  |      D  zs_total_out                 10U 0                                      Total bytes written | ||||||
|  |      D  zs_msg                         *                                        Last errmsg or null | ||||||
|  |      D  zs_state                       *                                        Internal state | ||||||
|  |      D  zs_zalloc                      *   procptr                              Int. state allocator | ||||||
|  |      D  zs_free                        *   procptr                              Int. state dealloc. | ||||||
|  |      D  zs_opaque                      *                                        Private alloc. data | ||||||
|  |      D  zs_data_type                 10i 0                                      ASC/BIN best guess | ||||||
|  |      D  zs_adler                     10u 0                                      Uncompr. adler32 val | ||||||
|  |      D                               10U 0                                      Reserved | ||||||
|  |      D                               10U 0                                      Ptr. alignment | ||||||
|  |       * | ||||||
|  |       ************************************************************************** | ||||||
|  |       *                     Utility function prototypes | ||||||
|  |       ************************************************************************** | ||||||
|  |       * | ||||||
|  |      D compress        PR            10I 0 extproc('compress') | ||||||
|  |      D  dest                      32767    options(*varsize)                    Destination buffer | ||||||
|  |      D  destLen                      10U 0                                      Destination length | ||||||
|  |      D  source                    32767    const options(*varsize)              Source buffer | ||||||
|  |      D  sourceLen                    10u 0 value                                Source length | ||||||
|  |       * | ||||||
|  |      D compress2       PR            10I 0 extproc('compress2') | ||||||
|  |      D  dest                      32767    options(*varsize)                    Destination buffer | ||||||
|  |      D  destLen                      10U 0                                      Destination length | ||||||
|  |      D  source                    32767    const options(*varsize)              Source buffer | ||||||
|  |      D  sourceLen                    10U 0 value                                Source length | ||||||
|  |      D  level                        10I 0 value                                Compression level | ||||||
|  |       * | ||||||
|  |      D compressBound   PR            10U 0 extproc('compressBound') | ||||||
|  |      D  sourceLen                    10U 0 value | ||||||
|  |       * | ||||||
|  |      D uncompress      PR            10I 0 extproc('uncompress') | ||||||
|  |      D  dest                      32767    options(*varsize)                    Destination buffer | ||||||
|  |      D  destLen                      10U 0                                      Destination length | ||||||
|  |      D  source                    32767    const options(*varsize)              Source buffer | ||||||
|  |      D  sourceLen                    10U 0 value                                Source length | ||||||
|  |       * | ||||||
|  |      D gzopen          PR                  extproc('gzopen') | ||||||
|  |      D                                     like(gzFile) | ||||||
|  |      D  path                           *   value options(*string)               File pathname | ||||||
|  |      D  mode                           *   value options(*string)               Open mode | ||||||
|  |       * | ||||||
|  |      D gzdopen         PR                  extproc('gzdopen') | ||||||
|  |      D                                     like(gzFile) | ||||||
|  |      D  fd                           10i 0 value                                File descriptor | ||||||
|  |      D  mode                           *   value options(*string)               Open mode | ||||||
|  |       * | ||||||
|  |      D gzsetparams     PR            10I 0 extproc('gzsetparams') | ||||||
|  |      D  file                               value like(gzFile)                   File pointer | ||||||
|  |      D  level                        10I 0 value | ||||||
|  |      D  strategy                     10i 0 value | ||||||
|  |       * | ||||||
|  |      D gzread          PR            10I 0 extproc('gzread') | ||||||
|  |      D  file                               value like(gzFile)                   File pointer | ||||||
|  |      D  buf                       32767    options(*varsize)                    Buffer | ||||||
|  |      D  len                          10u 0 value                                Buffer length | ||||||
|  |       * | ||||||
|  |      D gzwrite         PR            10I 0 extproc('gzwrite') | ||||||
|  |      D  file                               value like(gzFile)                   File pointer | ||||||
|  |      D  buf                       32767    const options(*varsize)              Buffer | ||||||
|  |      D  len                          10u 0 value                                Buffer length | ||||||
|  |       * | ||||||
|  |      D gzputs          PR            10I 0 extproc('gzputs') | ||||||
|  |      D  file                               value like(gzFile)                   File pointer | ||||||
|  |      D  s                              *   value options(*string)               String to output | ||||||
|  |       * | ||||||
|  |      D gzgets          PR              *   extproc('gzgets') | ||||||
|  |      D  file                               value like(gzFile)                   File pointer | ||||||
|  |      D  buf                       32767    options(*varsize)                    Read buffer | ||||||
|  |      D  len                          10i 0 value                                Buffer length | ||||||
|  |       * | ||||||
|  |      D gzflush         PR            10i 0 extproc('gzflush') | ||||||
|  |      D  file                               value like(gzFile)                   File pointer | ||||||
|  |      D  flush                        10I 0 value                                Type of flush | ||||||
|  |       * | ||||||
|  |      D gzseek          PR                  extproc('gzseek') | ||||||
|  |      D                                     like(z_off_t) | ||||||
|  |      D  file                               value like(gzFile)                   File pointer | ||||||
|  |      D  offset                             value like(z_off_t)                  Offset | ||||||
|  |      D  whence                       10i 0 value                                Origin | ||||||
|  |       * | ||||||
|  |      D gzrewind        PR            10i 0 extproc('gzrewind') | ||||||
|  |      D  file                               value like(gzFile)                   File pointer | ||||||
|  |       * | ||||||
|  |      D gztell          PR                  extproc('gztell') | ||||||
|  |      D                                     like(z_off_t) | ||||||
|  |      D  file                               value like(gzFile)                   File pointer | ||||||
|  |       * | ||||||
|  |      D gzeof           PR            10i 0 extproc('gzeof') | ||||||
|  |      D  file                               value like(gzFile)                   File pointer | ||||||
|  |       * | ||||||
|  |      D gzclose         PR            10i 0 extproc('gzclose') | ||||||
|  |      D  file                               value like(gzFile)                   File pointer | ||||||
|  |       * | ||||||
|  |      D gzerror         PR              *   extproc('gzerror')                   Error string | ||||||
|  |      D  file                               value like(gzFile)                   File pointer | ||||||
|  |      D  errnum                       10I 0                                      Error code | ||||||
|  |       * | ||||||
|  |      D gzclearerr      PR                  extproc('gzclearerr') | ||||||
|  |      D  file                               value like(gzFile)                   File pointer | ||||||
|  |       * | ||||||
|  |       ************************************************************************** | ||||||
|  |       *                        Basic function prototypes | ||||||
|  |       ************************************************************************** | ||||||
|  |       * | ||||||
|  |      D zlibVersion     PR              *   extproc('zlibVersion')               Version string | ||||||
|  |       * | ||||||
|  |      D deflateInit     PR            10I 0 extproc('deflateInit_')              Init. compression | ||||||
|  |      D  strm                               like(z_stream)                       Compression stream | ||||||
|  |      D  level                        10I 0 value                                Compression level | ||||||
|  |      D  version                        *   value options(*string)               Version string | ||||||
|  |      D  stream_size                  10i 0 value                                Stream struct. size | ||||||
|  |       * | ||||||
|  |      D deflate         PR            10I 0 extproc('deflate')                   Compress data | ||||||
|  |      D  strm                               like(z_stream)                       Compression stream | ||||||
|  |      D  flush                        10I 0 value                                Flush type required | ||||||
|  |       * | ||||||
|  |      D deflateEnd      PR            10I 0 extproc('deflateEnd')                Termin. compression | ||||||
|  |      D  strm                               like(z_stream)                       Compression stream | ||||||
|  |       * | ||||||
|  |      D inflateInit     PR            10I 0 extproc('inflateInit_')              Init. expansion | ||||||
|  |      D  strm                               like(z_stream)                       Expansion stream | ||||||
|  |      D  version                        *   value options(*string)               Version string | ||||||
|  |      D  stream_size                  10i 0 value                                Stream struct. size | ||||||
|  |       * | ||||||
|  |      D inflate         PR            10I 0 extproc('inflate')                   Expand data | ||||||
|  |      D  strm                               like(z_stream)                       Expansion stream | ||||||
|  |      D  flush                        10I 0 value                                Flush type required | ||||||
|  |       * | ||||||
|  |      D inflateEnd      PR            10I 0 extproc('inflateEnd')                Termin. expansion | ||||||
|  |      D  strm                               like(z_stream)                       Expansion stream | ||||||
|  |       * | ||||||
|  |       ************************************************************************** | ||||||
|  |       *                        Advanced function prototypes | ||||||
|  |       ************************************************************************** | ||||||
|  |       * | ||||||
|  |      D deflateInit2    PR            10I 0 extproc('deflateInit2_')             Init. compression | ||||||
|  |      D  strm                               like(z_stream)                       Compression stream | ||||||
|  |      D  level                        10I 0 value                                Compression level | ||||||
|  |      D  method                       10I 0 value                                Compression method | ||||||
|  |      D  windowBits                   10I 0 value                                log2(window size) | ||||||
|  |      D  memLevel                     10I 0 value                                Mem/cmpress tradeoff | ||||||
|  |      D  strategy                     10I 0 value                                Compression stategy | ||||||
|  |      D  version                        *   value options(*string)               Version string | ||||||
|  |      D  stream_size                  10i 0 value                                Stream struct. size | ||||||
|  |       * | ||||||
|  |      D deflateSetDictionary... | ||||||
|  |      D                 PR            10I 0 extproc('deflateSetDictionary')      Init. dictionary | ||||||
|  |      D  strm                               like(z_stream)                       Compression stream | ||||||
|  |      D  dictionary                32767    const options(*varsize)              Dictionary bytes | ||||||
|  |      D  dictLength                   10U 0 value                                Dictionary length | ||||||
|  |       * | ||||||
|  |      D deflateCopy     PR            10I 0 extproc('deflateCopy')               Compress strm 2 strm | ||||||
|  |      D  dest                               like(z_stream)                       Destination stream | ||||||
|  |      D  source                             like(z_stream)                       Source stream | ||||||
|  |       * | ||||||
|  |      D deflateReset    PR            10I 0 extproc('deflateReset')              End and init. stream | ||||||
|  |      D  strm                               like(z_stream)                       Compression stream | ||||||
|  |       * | ||||||
|  |      D deflateParams   PR            10I 0 extproc('deflateParams')             Change level & strat | ||||||
|  |      D  strm                               like(z_stream)                       Compression stream | ||||||
|  |      D  level                        10I 0 value                                Compression level | ||||||
|  |      D  strategy                     10I 0 value                                Compression stategy | ||||||
|  |       * | ||||||
|  |      D deflateBound    PR            10U 0 extproc('deflateBound')              Change level & strat | ||||||
|  |      D  strm                               like(z_stream)                       Compression stream | ||||||
|  |      D  sourcelen                    10U 0 value                                Compression level | ||||||
|  |       * | ||||||
|  |      D deflatePrime    PR            10I 0 extproc('deflatePrime')              Change level & strat | ||||||
|  |      D  strm                               like(z_stream)                       Compression stream | ||||||
|  |      D  bits                         10I 0 value                                Number of bits to insert | ||||||
|  |      D  value                        10I 0 value                                Bits to insert | ||||||
|  |       * | ||||||
|  |      D inflateInit2    PR            10I 0 extproc('inflateInit2_')             Init. expansion | ||||||
|  |      D  strm                               like(z_stream)                       Expansion stream | ||||||
|  |      D  windowBits                   10I 0 value                                log2(window size) | ||||||
|  |      D  version                        *   value options(*string)               Version string | ||||||
|  |      D  stream_size                  10i 0 value                                Stream struct. size | ||||||
|  |       * | ||||||
|  |      D inflateSetDictionary... | ||||||
|  |      D                 PR            10I 0 extproc('inflateSetDictionary')      Init. dictionary | ||||||
|  |      D  strm                               like(z_stream)                       Expansion stream | ||||||
|  |      D  dictionary                32767    const options(*varsize)              Dictionary bytes | ||||||
|  |      D  dictLength                   10U 0 value                                Dictionary length | ||||||
|  |       * | ||||||
|  |      D inflateSync     PR            10I 0 extproc('inflateSync')               Sync. expansion | ||||||
|  |      D  strm                               like(z_stream)                       Expansion stream | ||||||
|  |       * | ||||||
|  |      D inflateCopy     PR            10I 0 extproc('inflateCopy') | ||||||
|  |      D  dest                               like(z_stream)                       Destination stream | ||||||
|  |      D  source                             like(z_stream)                       Source stream | ||||||
|  |       * | ||||||
|  |      D inflateReset    PR            10I 0 extproc('inflateReset')              End and init. stream | ||||||
|  |      D  strm                               like(z_stream)                       Expansion stream | ||||||
|  |       * | ||||||
|  |      D inflateBackInit... | ||||||
|  |      D                 PR            10I 0 extproc('inflateBackInit_') | ||||||
|  |      D  strm                               like(z_stream)                       Expansion stream | ||||||
|  |      D  windowBits                   10I 0 value                                Log2(buffer size) | ||||||
|  |      D  window                    32767    options(*varsize)                    Buffer | ||||||
|  |      D  version                        *   value options(*string)               Version string | ||||||
|  |      D  stream_size                  10i 0 value                                Stream struct. size | ||||||
|  |       * | ||||||
|  |      D inflateBack     PR            10I 0 extproc('inflateBack') | ||||||
|  |      D  strm                               like(z_stream)                       Expansion stream | ||||||
|  |      D  in                             *   value procptr                        Input function | ||||||
|  |      D  in_desc                        *   value                                Input descriptor | ||||||
|  |      D  out                            *   value procptr                        Output function | ||||||
|  |      D  out_desc                       *   value                                Output descriptor | ||||||
|  |       * | ||||||
|  |      D inflateBackEnd  PR            10I 0 extproc('inflateBackEnd') | ||||||
|  |      D  strm                               like(z_stream)                       Expansion stream | ||||||
|  |       * | ||||||
|  |      D zlibCompileFlags... | ||||||
|  |      D                 PR            10U 0 extproc('zlibCompileFlags') | ||||||
|  |       * | ||||||
|  |       ************************************************************************** | ||||||
|  |       *                        Checksum function prototypes | ||||||
|  |       ************************************************************************** | ||||||
|  |       * | ||||||
|  |      D adler32         PR            10U 0 extproc('adler32')                   New checksum | ||||||
|  |      D  adler                        10U 0 value                                Old checksum | ||||||
|  |      D  buf                       32767    const options(*varsize)              Bytes to accumulate | ||||||
|  |      D  len                          10U 0 value                                Buffer length | ||||||
|  |       * | ||||||
|  |      D crc32           PR            10U 0 extproc('crc32')                     New checksum | ||||||
|  |      D  crc                          10U 0 value                                Old checksum | ||||||
|  |      D  buf                       32767    const options(*varsize)              Bytes to accumulate | ||||||
|  |      D  len                          10U 0 value                                Buffer length | ||||||
|  |       * | ||||||
|  |       ************************************************************************** | ||||||
|  |       *                     Miscellaneous function prototypes | ||||||
|  |       ************************************************************************** | ||||||
|  |       * | ||||||
|  |      D zError          PR              *   extproc('zError')                    Error string | ||||||
|  |      D  err                          10I 0 value                                Error code | ||||||
|  |       * | ||||||
|  |      D inflateSyncPoint... | ||||||
|  |      D                 PR            10I 0 extproc('inflateSyncPoint') | ||||||
|  |      D  strm                               like(z_stream)                       Expansion stream | ||||||
|  |       * | ||||||
|  |      D get_crc_table   PR              *   extproc('get_crc_table')             Ptr to ulongs | ||||||
|  |       * | ||||||
|  |       /endif | ||||||
							
								
								
									
										48
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										48
									
								
								configure
									
									
									
									
										vendored
									
									
								
							| @@ -53,6 +53,7 @@ case "$1" in | |||||||
|     -l* | --l*) libdir="$2"; shift; shift;; |     -l* | --l*) libdir="$2"; shift; shift;; | ||||||
|     -i* | --i*) includedir="$2"; shift; shift;; |     -i* | --i*) includedir="$2"; shift; shift;; | ||||||
|     -s* | --s*) shared=1; shift;; |     -s* | --s*) shared=1; shift;; | ||||||
|  |     *) echo "unknown option: $1"; echo "$0 --help for help"; exit 1;; | ||||||
|     esac |     esac | ||||||
| done | done | ||||||
|  |  | ||||||
| @@ -76,6 +77,8 @@ if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) 2>/dev/null; then | |||||||
|   CFLAGS="$cflags" |   CFLAGS="$cflags" | ||||||
|   case `(uname -s || echo unknown) 2>/dev/null` in |   case `(uname -s || echo unknown) 2>/dev/null` in | ||||||
|   Linux | linux) LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1"};; |   Linux | linux) LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1"};; | ||||||
|  |   CYGWIN* | Cygwin* | cygwin* ) | ||||||
|  |              EXE='.exe';; | ||||||
|   QNX*)  # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4 |   QNX*)  # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4 | ||||||
|          # (alain.bonnefoy@icbt.com) |          # (alain.bonnefoy@icbt.com) | ||||||
|                  LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"};; |                  LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"};; | ||||||
| @@ -188,11 +191,8 @@ fi | |||||||
|  |  | ||||||
| cat > $test.c <<EOF | cat > $test.c <<EOF | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <stdlib.h> | #include <stdarg.h> | ||||||
|  | #include "zconf.h" | ||||||
| #if (defined(__MSDOS__) || defined(_WINDOWS) || defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__STDC__) || defined(__cplusplus) || defined(__OS2__)) && !defined(STDC) |  | ||||||
| #  define STDC |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| int main() | int main() | ||||||
| { | { | ||||||
| @@ -205,7 +205,7 @@ int main() | |||||||
| EOF | EOF | ||||||
|  |  | ||||||
| if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then | if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then | ||||||
|   echo "Checking whether to use vsnprintf() or snprintf()... using vsnprintf()" |   echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()" | ||||||
|  |  | ||||||
|   cat > $test.c <<EOF |   cat > $test.c <<EOF | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| @@ -228,7 +228,7 @@ int main() | |||||||
| } | } | ||||||
| EOF | EOF | ||||||
|  |  | ||||||
|   if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then |   if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then | ||||||
|     echo "Checking for vsnprintf() in stdio.h... Yes." |     echo "Checking for vsnprintf() in stdio.h... Yes." | ||||||
|  |  | ||||||
|     cat >$test.c <<EOF |     cat >$test.c <<EOF | ||||||
| @@ -237,14 +237,14 @@ EOF | |||||||
|  |  | ||||||
| int mytest(char *fmt, ...) | int mytest(char *fmt, ...) | ||||||
| { | { | ||||||
|   int i; |   int n; | ||||||
|   char buf[20]; |   char buf[20]; | ||||||
|   va_list ap; |   va_list ap; | ||||||
|  |  | ||||||
|   va_start(ap, fmt); |   va_start(ap, fmt); | ||||||
|   i = vsnprintf(buf, sizeof(buf), fmt, ap); |   n = vsnprintf(buf, sizeof(buf), fmt, ap); | ||||||
|   va_end(ap); |   va_end(ap); | ||||||
|   return 0; |   return n; | ||||||
| } | } | ||||||
|  |  | ||||||
| int main() | int main() | ||||||
| @@ -275,14 +275,14 @@ EOF | |||||||
|  |  | ||||||
| int mytest(char *fmt, ...) | int mytest(char *fmt, ...) | ||||||
| { | { | ||||||
|   int i; |   int n; | ||||||
|   char buf[20]; |   char buf[20]; | ||||||
|   va_list ap; |   va_list ap; | ||||||
|  |  | ||||||
|   va_start(ap, fmt); |   va_start(ap, fmt); | ||||||
|   i = vsprintf(buf, fmt, ap); |   n = vsprintf(buf, fmt, ap); | ||||||
|   va_end(ap); |   va_end(ap); | ||||||
|   return 0; |   return n; | ||||||
| } | } | ||||||
|  |  | ||||||
| int main() | int main() | ||||||
| @@ -302,11 +302,10 @@ EOF | |||||||
|     fi |     fi | ||||||
|   fi |   fi | ||||||
| else | else | ||||||
|   echo "Checking whether to use vsnprintf() or snprintf()... using snprintf()" |   echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()" | ||||||
|  |  | ||||||
|   cat >$test.c <<EOF |   cat >$test.c <<EOF | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <stdarg.h> |  | ||||||
|  |  | ||||||
| int mytest() | int mytest() | ||||||
| { | { | ||||||
| @@ -322,20 +321,17 @@ int main() | |||||||
| } | } | ||||||
| EOF | EOF | ||||||
|  |  | ||||||
|   if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then |   if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then | ||||||
|     echo "Checking for snprintf() in stdio.h... Yes." |     echo "Checking for snprintf() in stdio.h... Yes." | ||||||
|  |  | ||||||
|     cat >$test.c <<EOF |     cat >$test.c <<EOF | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <stdarg.h> |  | ||||||
|  |  | ||||||
| int mytest(char *fmt, ...) | int mytest() | ||||||
| { | { | ||||||
|   int i; |  | ||||||
|   char buf[20]; |   char buf[20]; | ||||||
|  |  | ||||||
|   i = snprintf(buf, sizeof(buf), "%s", "foo"); |   return snprintf(buf, sizeof(buf), "%s", "foo"); | ||||||
|   return 0; |  | ||||||
| } | } | ||||||
|  |  | ||||||
| int main() | int main() | ||||||
| @@ -362,15 +358,12 @@ EOF | |||||||
|  |  | ||||||
|     cat >$test.c <<EOF |     cat >$test.c <<EOF | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <stdarg.h> |  | ||||||
|  |  | ||||||
| int mytest(char *fmt, ...) | int mytest() | ||||||
| { | { | ||||||
|   int i; |  | ||||||
|   char buf[20]; |   char buf[20]; | ||||||
|  |  | ||||||
|   i = sprintf(buf, "%s", "foo"); |   return sprintf(buf, "%s", "foo"); | ||||||
|   return 0; |  | ||||||
| } | } | ||||||
|  |  | ||||||
| int main() | int main() | ||||||
| @@ -428,7 +421,7 @@ case $CFLAGS in | |||||||
|     fi;; |     fi;; | ||||||
| esac | esac | ||||||
|  |  | ||||||
| rm -f $test.[co] $test$shared_ext | rm -f $test.[co] $test $test$shared_ext | ||||||
|  |  | ||||||
| # udpate Makefile | # udpate Makefile | ||||||
| sed < Makefile.in " | sed < Makefile.in " | ||||||
| @@ -442,6 +435,7 @@ sed < Makefile.in " | |||||||
| /^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM# | /^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM# | ||||||
| /^AR *=/s#=.*#=$AR# | /^AR *=/s#=.*#=$AR# | ||||||
| /^RANLIB *=/s#=.*#=$RANLIB# | /^RANLIB *=/s#=.*#=$RANLIB# | ||||||
|  | /^EXE *=/s#=.*#=$EXE# | ||||||
| /^prefix *=/s#=.*#=$prefix# | /^prefix *=/s#=.*#=$prefix# | ||||||
| /^exec_prefix *=/s#=.*#=$exec_prefix# | /^exec_prefix *=/s#=.*#=$exec_prefix# | ||||||
| /^libdir *=/s#=.*#=$libdir# | /^libdir *=/s#=.*#=$libdir# | ||||||
|   | |||||||
| @@ -5,62 +5,66 @@ for help about these, not the zlib authors. Thanks. | |||||||
|  |  | ||||||
|  |  | ||||||
| ada/        by Dmitriy Anisimkov <anisimkov@yahoo.com> | ada/        by Dmitriy Anisimkov <anisimkov@yahoo.com> | ||||||
| 	Support for Ada |         Support for Ada | ||||||
| 	See http://zlib-ada.sourceforge.net/ |         See http://zlib-ada.sourceforge.net/ | ||||||
|  |  | ||||||
| asm586/ and asm686/ by Brian Raiter <breadbox@muppetlabs.com> | asm586/ | ||||||
| 	asm code for Pentium and PPro/PII, using the AT&T (GNU as) syntax | asm686/     by Brian Raiter <breadbox@muppetlabs.com> | ||||||
| 	See http://www.muppetlabs.com/~breadbox/software/assembly.html |         asm code for Pentium and PPro/PII, using the AT&T (GNU as) syntax | ||||||
|  |         See http://www.muppetlabs.com/~breadbox/software/assembly.html | ||||||
|  |  | ||||||
| blast/      by Mark Adler <madler@alumni.caltech.edu> | blast/      by Mark Adler <madler@alumni.caltech.edu> | ||||||
| 	Decompressor for output of PKWare Data Compression Library (DCL) |         Decompressor for output of PKWare Data Compression Library (DCL) | ||||||
|  |  | ||||||
| delphi/     by Cosmin Truta <cosmint@cs.ubbcluj.ro> | delphi/     by Cosmin Truta <cosmint@cs.ubbcluj.ro> | ||||||
| 	Support for Delphi and C++ Builder |         Support for Delphi and C++ Builder | ||||||
|  |  | ||||||
|  | gzappend/   by Mark Adler <madler@alumni.caltech.edu> | ||||||
|  |         append to a gzip file -- illustrates the use of Z_BLOCK | ||||||
|  |  | ||||||
| infback9/   by Mark Adler <madler@alumni.caltech.edu> | infback9/   by Mark Adler <madler@alumni.caltech.edu> | ||||||
|         Unsupported diffs to infback to decode the deflate64 format |         Unsupported diffs to infback to decode the deflate64 format | ||||||
|  |  | ||||||
| inflate86/  by Chris Anderson <christop@charm.net> | inflate86/  by Chris Anderson <christop@charm.net> | ||||||
| 	Tuned x86 gcc asm code to replace inflate_fast() |         Tuned x86 gcc asm code to replace inflate_fast() | ||||||
|  |  | ||||||
| iostream/   by Kevin Ruland <kevin@rodin.wustl.edu> | iostream/   by Kevin Ruland <kevin@rodin.wustl.edu> | ||||||
| 	A C++ I/O streams interface to the zlib gz* functions |         A C++ I/O streams interface to the zlib gz* functions | ||||||
|  |  | ||||||
| iostream2/  by Tyge L<>vset <Tyge.Lovset@cmr.no> | iostream2/  by Tyge L<>vset <Tyge.Lovset@cmr.no> | ||||||
| 	Another C++ I/O streams interface |         Another C++ I/O streams interface | ||||||
|  |  | ||||||
| iostream3/  by Ludwig Schwardt <schwardt@sun.ac.za> | iostream3/  by Ludwig Schwardt <schwardt@sun.ac.za> | ||||||
|             and Kevin Ruland <kevin@rodin.wustl.edu> |             and Kevin Ruland <kevin@rodin.wustl.edu> | ||||||
| 	Yet another C++ I/O streams interface |         Yet another C++ I/O streams interface | ||||||
|  |  | ||||||
| masm686/    by Dan Higdon <hdan@kinesoft.com> | masm686/    by Dan Higdon <hdan@kinesoft.com> | ||||||
|             and Chuck Walbourn <chuckw@kinesoft.com> |             and Chuck Walbourn <chuckw@kinesoft.com> | ||||||
| 	asm code for Pentium Pro/PII, using the MASM syntax |         asm code for Pentium Pro/PII, using the MASM syntax | ||||||
|  |  | ||||||
| masmx86/    by Gilles Vollant <info@winimage.com> | masmx86/    by Gilles Vollant <info@winimage.com> | ||||||
| 	x86 asm code to replace longest_match() and inflate_fast(), |         x86 asm code to replace longest_match() and inflate_fast(), | ||||||
| 	for Visual C++ and MASM |         for Visual C++ and MASM | ||||||
|  |  | ||||||
| minizip/    by Gilles Vollant <info@winimage.com> | minizip/    by Gilles Vollant <info@winimage.com> | ||||||
| 	Mini zip and unzip based on zlib |         Mini zip and unzip based on zlib | ||||||
| 	See http://www.winimage.com/zLibDll/unzip.html |         See http://www.winimage.com/zLibDll/unzip.html | ||||||
|  |  | ||||||
| pascal/     by Bob Dellaca <bobdl@xtra.co.nz> et al. | pascal/     by Bob Dellaca <bobdl@xtra.co.nz> et al. | ||||||
| 	Support for Pascal |         Support for Pascal | ||||||
|  |  | ||||||
| puff/       by Mark Adler <madler@alumni.caltech.edu> | puff/       by Mark Adler <madler@alumni.caltech.edu> | ||||||
| 	Small, low memory usage inflate.  Also serves to provide an |         Small, low memory usage inflate.  Also serves to provide an | ||||||
| 	unambiguous description of the deflate format. |         unambiguous description of the deflate format. | ||||||
|  |  | ||||||
| testzlib/   by Gilles Vollant <info@winimage.com> | testzlib/   by Gilles Vollant <info@winimage.com> | ||||||
| 	Example of the use of zlib |         Example of the use of zlib | ||||||
|  |  | ||||||
| untgz/      by "Pedro A. Aranda Guti\irrez" <paag@tid.es> | untgz/      by "Pedro A. Aranda Guti\irrez" <paag@tid.es> | ||||||
| 	A very simple tar.gz file extractor using zlib |         A very simple tar.gz file extractor using zlib | ||||||
|  |  | ||||||
| visual-basic.txt by Carlos Rios <c_rios@sonda.cl> | visual-basic.txt by Carlos Rios <c_rios@sonda.cl> | ||||||
| 	How to use compress(), uncompress() and the gz* functions from VB |         How to use compress(), uncompress() and the gz* functions from VB | ||||||
|  |  | ||||||
| vstudio/    by Gilles Vollant <info@winimage.com> | vstudio/    by Gilles Vollant <info@winimage.com> | ||||||
| 	Building zlib with Visual Studio .NET |         Building zlib with Visual Studio .NET | ||||||
|   | |||||||
| @@ -146,6 +146,17 @@ private package ZLib.Thin is | |||||||
|       strategy : Int) |       strategy : Int) | ||||||
|       return     Int;       -- zlib.h:506 |       return     Int;       -- zlib.h:506 | ||||||
|  |  | ||||||
|  |    function deflateBound | ||||||
|  |      (strm     : Z_Streamp; | ||||||
|  |       sourceLen : ULong) | ||||||
|  |       return     Int;       -- zlib.h:595 | ||||||
|  |  | ||||||
|  |    function deflatePrime | ||||||
|  |      (strm     : Z_Streamp; | ||||||
|  |       bits     : Int; | ||||||
|  |       value    : Int) | ||||||
|  |       return     Int;       -- zlib.h:604 | ||||||
|  |  | ||||||
|    function inflateSetDictionary |    function inflateSetDictionary | ||||||
|      (strm       : Z_Streamp; |      (strm       : Z_Streamp; | ||||||
|       dictionary : Byte_Access; |       dictionary : Byte_Access; | ||||||
| @@ -421,6 +432,8 @@ private | |||||||
|    pragma Import (C, deflateCopy, "deflateCopy"); |    pragma Import (C, deflateCopy, "deflateCopy"); | ||||||
|    pragma Import (C, deflateReset, "deflateReset"); |    pragma Import (C, deflateReset, "deflateReset"); | ||||||
|    pragma Import (C, deflateParams, "deflateParams"); |    pragma Import (C, deflateParams, "deflateParams"); | ||||||
|  |    pragma Import (C, deflateBound, "deflateBound"); | ||||||
|  |    pragma Import (C, deflatePrime, "deflatePrime"); | ||||||
|    pragma Import (C, inflateSetDictionary, "inflateSetDictionary"); |    pragma Import (C, inflateSetDictionary, "inflateSetDictionary"); | ||||||
|    pragma Import (C, inflateSync, "inflateSync"); |    pragma Import (C, inflateSync, "inflateSync"); | ||||||
|    pragma Import (C, inflateReset, "inflateReset"); |    pragma Import (C, inflateReset, "inflateReset"); | ||||||
|   | |||||||
| @@ -152,7 +152,7 @@ procedure DecompressToUserBuf(const InBuf: Pointer; InBytes: Integer; | |||||||
|   const OutBuf: Pointer; BufSize: Integer); |   const OutBuf: Pointer; BufSize: Integer); | ||||||
|  |  | ||||||
| const | const | ||||||
|   zlib_version = '1.2.0'; |   zlib_version = '1.2.1'; | ||||||
|  |  | ||||||
| type | type | ||||||
|   EZlibError = class(Exception); |   EZlibError = class(Exception); | ||||||
|   | |||||||
							
								
								
									
										500
									
								
								contrib/gzappend/gzappend.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										500
									
								
								contrib/gzappend/gzappend.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,500 @@ | |||||||
|  | /* gzappend -- command to append to a gzip file | ||||||
|  |  | ||||||
|  |   Copyright (C) 2003 Mark Adler, all rights reserved | ||||||
|  |   version 1.1, 4 Nov 2003 | ||||||
|  |  | ||||||
|  |   This software is provided 'as-is', without any express or implied | ||||||
|  |   warranty.  In no event will the author be held liable for any damages | ||||||
|  |   arising from the use of this software. | ||||||
|  |  | ||||||
|  |   Permission is granted to anyone to use this software for any purpose, | ||||||
|  |   including commercial applications, and to alter it and redistribute it | ||||||
|  |   freely, subject to the following restrictions: | ||||||
|  |  | ||||||
|  |   1. The origin of this software must not be misrepresented; you must not | ||||||
|  |      claim that you wrote the original software. If you use this software | ||||||
|  |      in a product, an acknowledgment in the product documentation would be | ||||||
|  |      appreciated but is not required. | ||||||
|  |   2. Altered source versions must be plainly marked as such, and must not be | ||||||
|  |      misrepresented as being the original software. | ||||||
|  |   3. This notice may not be removed or altered from any source distribution. | ||||||
|  |  | ||||||
|  |   Mark Adler    madler@alumni.caltech.edu | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Change history: | ||||||
|  |  * | ||||||
|  |  * 1.0  19 Oct 2003     - First version | ||||||
|  |  * 1.1   4 Nov 2003     - Expand and clarify some comments and notes | ||||||
|  |  *                      - Add version and copyright to help | ||||||
|  |  *                      - Send help to stdout instead of stderr | ||||||
|  |  *                      - Add some preemptive typecasts | ||||||
|  |  *                      - Add L to constants in lseek() calls | ||||||
|  |  *                      - Remove some debugging information in error messages | ||||||
|  |  *                      - Use new data_type definition for zlib 1.2.1 | ||||||
|  |  *                      - Simplfy and unify file operations | ||||||
|  |  *                      - Finish off gzip file in gztack() | ||||||
|  |  *                      - Use deflatePrime() instead of adding empty blocks | ||||||
|  |  *                      - Keep gzip file clean on appended file read errors | ||||||
|  |  *                      - Use in-place rotate instead of auxiliary buffer | ||||||
|  |  *                        (Why you ask?  Because it was fun to write!) | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |    gzappend takes a gzip file and appends to it, compressing files from the | ||||||
|  |    command line or data from stdin.  The gzip file is written to directly, to | ||||||
|  |    avoid copying that file, in case it's large.  Note that this results in the | ||||||
|  |    unfriendly behavior that if gzappend fails, the gzip file is corrupted. | ||||||
|  |  | ||||||
|  |    This program was written to illustrate the use of the new Z_BLOCK option of | ||||||
|  |    zlib 1.2.1's inflate() function.  This option returns from inflate() at each | ||||||
|  |    block boundary to facilitate locating and modifying the last block bit at | ||||||
|  |    the start of the final deflate block.  Also whether using Z_BLOCK or not, | ||||||
|  |    another required feature of zlib 1.2.1 is that inflate() now provides the | ||||||
|  |    number of unusued bits in the last input byte used.  gzappend will not work | ||||||
|  |    with versions of zlib earlier than 1.2.1. | ||||||
|  |  | ||||||
|  |    gzappend first decompresses the gzip file internally, discarding all but | ||||||
|  |    the last 32K of uncompressed data, and noting the location of the last block | ||||||
|  |    bit and the number of unused bits in the last byte of the compressed data. | ||||||
|  |    The gzip trailer containing the CRC-32 and length of the uncompressed data | ||||||
|  |    is verified.  This trailer will be later overwritten. | ||||||
|  |  | ||||||
|  |    Then the last block bit is cleared by seeking back in the file and rewriting | ||||||
|  |    the byte that contains it.  Seeking forward, the last byte of the compressed | ||||||
|  |    data is saved along with the number of unused bits to initialize deflate. | ||||||
|  |  | ||||||
|  |    A deflate process is initialized, using the last 32K of the uncompressed | ||||||
|  |    data from the gzip file to initialize the dictionary.  If the total | ||||||
|  |    uncompressed data was less than 32K, then all of it is used to initialize | ||||||
|  |    the dictionary.  The deflate output bit buffer is also initialized with the | ||||||
|  |    last bits from the original deflate stream.  From here on, the data to | ||||||
|  |    append is simply compressed using deflate, and written to the gzip file. | ||||||
|  |    When that is complete, the new CRC-32 and uncompressed length are written | ||||||
|  |    as the trailer of the gzip file. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <string.h> | ||||||
|  | #include <fcntl.h> | ||||||
|  | #include <unistd.h> | ||||||
|  | #include "zlib.h" | ||||||
|  |  | ||||||
|  | #define local static | ||||||
|  | #define LGCHUNK 14 | ||||||
|  | #define CHUNK (1U << LGCHUNK) | ||||||
|  | #define DSIZE 32768U | ||||||
|  |  | ||||||
|  | /* print an error message and terminate with extreme prejudice */ | ||||||
|  | local void bye(char *msg1, char *msg2) | ||||||
|  | { | ||||||
|  |     fprintf(stderr, "gzappend error: %s%s\n", msg1, msg2); | ||||||
|  |     exit(1); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* return the greatest common divisor of a and b using Euclid's algorithm, | ||||||
|  |    modified to be fast when one argument much greater than the other, and | ||||||
|  |    coded to avoid unnecessary swapping */ | ||||||
|  | local unsigned gcd(unsigned a, unsigned b) | ||||||
|  | { | ||||||
|  |     unsigned c; | ||||||
|  |  | ||||||
|  |     while (a && b) | ||||||
|  |         if (a > b) { | ||||||
|  |             c = b; | ||||||
|  |             while (a - c >= c) | ||||||
|  |                 c <<= 1; | ||||||
|  |             a -= c; | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             c = a; | ||||||
|  |             while (b - c >= c) | ||||||
|  |                 c <<= 1; | ||||||
|  |             b -= c; | ||||||
|  |         } | ||||||
|  |     return a + b; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* rotate list[0..len-1] left by rot positions, in place */ | ||||||
|  | local void rotate(unsigned char *list, unsigned len, unsigned rot) | ||||||
|  | { | ||||||
|  |     unsigned char tmp; | ||||||
|  |     unsigned cycles; | ||||||
|  |     unsigned char *start, *last, *to, *from; | ||||||
|  |  | ||||||
|  |     /* normalize rot and handle degenerate cases */ | ||||||
|  |     if (len < 2) return; | ||||||
|  |     if (rot >= len) rot %= len; | ||||||
|  |     if (rot == 0) return; | ||||||
|  |  | ||||||
|  |     /* pointer to last entry in list */ | ||||||
|  |     last = list + (len - 1); | ||||||
|  |  | ||||||
|  |     /* do simple left shift by one */ | ||||||
|  |     if (rot == 1) { | ||||||
|  |         tmp = *list; | ||||||
|  |         memcpy(list, list + 1, len - 1); | ||||||
|  |         *last = tmp; | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /* do simple right shift by one */ | ||||||
|  |     if (rot == len - 1) { | ||||||
|  |         tmp = *last; | ||||||
|  |         memmove(list + 1, list, len - 1); | ||||||
|  |         *list = tmp; | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /* otherwise do rotate as a set of cycles in place */ | ||||||
|  |     cycles = gcd(len, rot);             /* number of cycles */ | ||||||
|  |     do { | ||||||
|  |         start = from = list + cycles;   /* start index is arbitrary */ | ||||||
|  |         tmp = *from;                    /* save entry to be overwritten */ | ||||||
|  |         for (;;) { | ||||||
|  |             to = from;                  /* next step in cycle */ | ||||||
|  |             from += rot;                /* go right rot positions */ | ||||||
|  |             if (from > last) from -= len;   /* (pointer better not wrap) */ | ||||||
|  |             if (from == start) break;   /* all but one shifted */ | ||||||
|  |             *to = *from;                /* shift left */ | ||||||
|  |         } | ||||||
|  |         *to = tmp;                      /* complete the circle */ | ||||||
|  |     } while (--cycles); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* structure for gzip file read operations */ | ||||||
|  | typedef struct { | ||||||
|  |     int fd;                     /* file descriptor */ | ||||||
|  |     int size;              	/* 1 << size is bytes in buf */ | ||||||
|  |     unsigned left;              /* bytes available at next */ | ||||||
|  |     unsigned char *buf;         /* buffer */ | ||||||
|  |     unsigned char *next;        /* next byte in buffer */ | ||||||
|  |     char *name;                 /* file name for error messages */ | ||||||
|  | } file; | ||||||
|  |  | ||||||
|  | /* reload buffer */ | ||||||
|  | local int readin(file *in) | ||||||
|  | { | ||||||
|  |     int len; | ||||||
|  |  | ||||||
|  |     len = read(in->fd, in->buf, 1 << in->size); | ||||||
|  |     if (len == -1) bye("error reading ", in->name); | ||||||
|  |     in->left = (unsigned)len; | ||||||
|  |     in->next = in->buf; | ||||||
|  |     return len; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* read from file in, exit if end-of-file */ | ||||||
|  | local int readmore(file *in) | ||||||
|  | { | ||||||
|  |     if (readin(in) == 0) bye("unexpected end of ", in->name); | ||||||
|  |     return 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #define read1(in) (in->left == 0 ? readmore(in) : 0, \ | ||||||
|  |                    in->left--, *(in->next)++) | ||||||
|  |  | ||||||
|  | /* skip over n bytes of in */ | ||||||
|  | local void skip(file *in, unsigned n) | ||||||
|  | { | ||||||
|  |     unsigned bypass; | ||||||
|  |  | ||||||
|  |     if (n > in->left) { | ||||||
|  |         n -= in->left; | ||||||
|  |         bypass = n & ~((1U << in->size) - 1); | ||||||
|  |         if (bypass) { | ||||||
|  |             if (lseek(in->fd, (off_t)bypass, SEEK_CUR) == -1) | ||||||
|  |                 bye("seeking ", in->name); | ||||||
|  |             n -= bypass; | ||||||
|  |         } | ||||||
|  |         readmore(in); | ||||||
|  |         if (n > in->left) | ||||||
|  |             bye("unexpected end of ", in->name); | ||||||
|  |     } | ||||||
|  |     in->left -= n; | ||||||
|  |     in->next += n; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* read a four-byte unsigned integer, little-endian, from in */ | ||||||
|  | unsigned long read4(file *in) | ||||||
|  | { | ||||||
|  |     unsigned long val; | ||||||
|  |  | ||||||
|  |     val = read1(in); | ||||||
|  |     val += (unsigned)read1(in) << 8; | ||||||
|  |     val += (unsigned long)read1(in) << 16; | ||||||
|  |     val += (unsigned long)read1(in) << 24; | ||||||
|  |     return val; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* skip over gzip header */ | ||||||
|  | local void gzheader(file *in) | ||||||
|  | { | ||||||
|  |     int flags; | ||||||
|  |     unsigned n; | ||||||
|  |  | ||||||
|  |     if (read1(in) != 31 || read1(in) != 139) bye(in->name, " not a gzip file"); | ||||||
|  |     if (read1(in) != 8) bye("unknown compression method in", in->name); | ||||||
|  |     flags = read1(in); | ||||||
|  |     if (flags & 0xe0) bye("unknown header flags set in", in->name); | ||||||
|  |     skip(in, 6); | ||||||
|  |     if (flags & 4) { | ||||||
|  |         n = read1(in); | ||||||
|  |         n += (unsigned)(read1(in)) << 8; | ||||||
|  |         skip(in, n); | ||||||
|  |     } | ||||||
|  |     if (flags & 8) while (read1(in) != 0) ; | ||||||
|  |     if (flags & 16) while (read1(in) != 0) ; | ||||||
|  |     if (flags & 2) skip(in, 2); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* decompress gzip file "name", return strm with a deflate stream ready to | ||||||
|  |    continue compression of the data in the gzip file, and return a file | ||||||
|  |    descriptor pointing to where to write the compressed data -- the deflate | ||||||
|  |    stream is initialized to compress using level "level" */ | ||||||
|  | local int gzscan(char *name, z_stream *strm, int level) | ||||||
|  | { | ||||||
|  |     int ret, lastbit, left, full; | ||||||
|  |     unsigned have; | ||||||
|  |     unsigned long crc, tot; | ||||||
|  |     unsigned char *window; | ||||||
|  |     off_t lastoff, end; | ||||||
|  |     file gz; | ||||||
|  |  | ||||||
|  |     /* open gzip file */ | ||||||
|  |     gz.name = name; | ||||||
|  |     gz.fd = open(name, O_RDWR, 0); | ||||||
|  |     if (gz.fd == -1) bye("cannot open ", name); | ||||||
|  |     gz.buf = malloc(CHUNK); | ||||||
|  |     if (gz.buf == NULL) bye("out of memory", ""); | ||||||
|  |     gz.size = LGCHUNK; | ||||||
|  |     gz.left = 0; | ||||||
|  |  | ||||||
|  |     /* skip gzip header */ | ||||||
|  |     gzheader(&gz); | ||||||
|  |  | ||||||
|  |     /* prepare to decompress */ | ||||||
|  |     window = malloc(DSIZE); | ||||||
|  |     if (window == NULL) bye("out of memory", ""); | ||||||
|  |     strm->zalloc = Z_NULL; | ||||||
|  |     strm->zfree = Z_NULL; | ||||||
|  |     strm->opaque = Z_NULL; | ||||||
|  |     ret = inflateInit2(strm, -15); | ||||||
|  |     if (ret != Z_OK) bye("out of memory", " or library mismatch"); | ||||||
|  |  | ||||||
|  |     /* decompress the deflate stream, saving append information */ | ||||||
|  |     lastbit = 0; | ||||||
|  |     lastoff = lseek(gz.fd, 0L, SEEK_CUR) - gz.left; | ||||||
|  |     left = 0; | ||||||
|  |     strm->avail_in = gz.left; | ||||||
|  |     strm->next_in = gz.next; | ||||||
|  |     crc = crc32(0L, Z_NULL, 0); | ||||||
|  |     have = full = 0; | ||||||
|  |     do { | ||||||
|  |         /* if needed, get more input */ | ||||||
|  |         if (strm->avail_in == 0) { | ||||||
|  |             readmore(&gz); | ||||||
|  |             strm->avail_in = gz.left; | ||||||
|  |             strm->next_in = gz.next; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         /* set up output to next available section of sliding window */ | ||||||
|  |         strm->avail_out = DSIZE - have; | ||||||
|  |         strm->next_out = window + have; | ||||||
|  |  | ||||||
|  |         /* inflate and check for errors */ | ||||||
|  |         ret = inflate(strm, Z_BLOCK); | ||||||
|  |         if (ret == Z_STREAM_ERROR) bye("internal stream error!", ""); | ||||||
|  |         if (ret == Z_MEM_ERROR) bye("out of memory", ""); | ||||||
|  |         if (ret == Z_DATA_ERROR) | ||||||
|  |             bye("invalid compressed data--format violated in", name); | ||||||
|  |  | ||||||
|  |         /* update crc and sliding window pointer */ | ||||||
|  |         crc = crc32(crc, window + have, DSIZE - have - strm->avail_out); | ||||||
|  |         if (strm->avail_out) | ||||||
|  |             have = DSIZE - strm->avail_out; | ||||||
|  |         else { | ||||||
|  |             have = 0; | ||||||
|  |             full = 1; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         /* process end of block */ | ||||||
|  |         if (strm->data_type & 128) { | ||||||
|  |             if (strm->data_type & 64) | ||||||
|  |                 left = strm->data_type & 0x1f; | ||||||
|  |             else { | ||||||
|  |                 lastbit = strm->data_type & 0x1f; | ||||||
|  |                 lastoff = lseek(gz.fd, 0L, SEEK_CUR) - strm->avail_in; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } while (ret != Z_STREAM_END); | ||||||
|  |     inflateEnd(strm); | ||||||
|  |     gz.left = strm->avail_in; | ||||||
|  |     gz.next = strm->next_in; | ||||||
|  |  | ||||||
|  |     /* save the location of the end of the compressed data */ | ||||||
|  |     end = lseek(gz.fd, 0L, SEEK_CUR) - gz.left; | ||||||
|  |  | ||||||
|  |     /* check gzip trailer and save total for deflate */ | ||||||
|  |     if (crc != read4(&gz)) | ||||||
|  |         bye("invalid compressed data--crc mismatch in ", name); | ||||||
|  |     tot = strm->total_out; | ||||||
|  |     if ((tot & 0xffffffffUL) != read4(&gz)) | ||||||
|  |         bye("invalid compressed data--length mismatch in", name); | ||||||
|  |  | ||||||
|  |     /* if not at end of file, warn */ | ||||||
|  |     if (gz.left || readin(&gz)) | ||||||
|  |         fprintf(stderr, | ||||||
|  |             "gzappend warning: junk at end of gzip file overwritten\n"); | ||||||
|  |  | ||||||
|  |     /* clear last block bit */ | ||||||
|  |     lseek(gz.fd, lastoff - (lastbit != 0), SEEK_SET); | ||||||
|  |     if (read(gz.fd, gz.buf, 1) != 1) bye("reading after seek on ", name); | ||||||
|  |     *gz.buf = (unsigned char)(*gz.buf ^ (1 << ((8 - lastbit) & 7))); | ||||||
|  |     lseek(gz.fd, -1L, SEEK_CUR); | ||||||
|  |     if (write(gz.fd, gz.buf, 1) != 1) bye("writing after seek to ", name); | ||||||
|  |  | ||||||
|  |     /* if window wrapped, build dictionary from window by rotating */ | ||||||
|  |     if (full) { | ||||||
|  |         rotate(window, DSIZE, have); | ||||||
|  |         have = DSIZE; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /* set up deflate stream with window, crc, total_in, and leftover bits */ | ||||||
|  |     ret = deflateInit2(strm, level, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY); | ||||||
|  |     if (ret != Z_OK) bye("out of memory", ""); | ||||||
|  |     deflateSetDictionary(strm, window, have); | ||||||
|  |     strm->adler = crc; | ||||||
|  |     strm->total_in = tot; | ||||||
|  |     if (left) { | ||||||
|  |         lseek(gz.fd, --end, SEEK_SET); | ||||||
|  |         if (read(gz.fd, gz.buf, 1) != 1) bye("reading after seek on ", name); | ||||||
|  |         deflatePrime(strm, 8 - left, *gz.buf); | ||||||
|  |     } | ||||||
|  |     lseek(gz.fd, end, SEEK_SET); | ||||||
|  |  | ||||||
|  |     /* clean up and return */ | ||||||
|  |     free(window); | ||||||
|  |     free(gz.buf); | ||||||
|  |     return gz.fd; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* append file "name" to gzip file gd using deflate stream strm -- if last | ||||||
|  |    is true, then finish off the deflate stream at the end */ | ||||||
|  | local void gztack(char *name, int gd, z_stream *strm, int last) | ||||||
|  | { | ||||||
|  |     int fd, len, ret; | ||||||
|  |     unsigned left; | ||||||
|  |     unsigned char *in, *out; | ||||||
|  |  | ||||||
|  |     /* open file to compress and append */ | ||||||
|  |     fd = 0; | ||||||
|  |     if (name != NULL) { | ||||||
|  |         fd = open(name, O_RDONLY, 0); | ||||||
|  |         if (fd == -1) | ||||||
|  |             fprintf(stderr, "gzappend warning: %s not found, skipping ...\n", | ||||||
|  |                     name); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /* allocate buffers */ | ||||||
|  |     in = fd == -1 ? NULL : malloc(CHUNK); | ||||||
|  |     out = malloc(CHUNK); | ||||||
|  |     if (out == NULL) bye("out of memory", ""); | ||||||
|  |  | ||||||
|  |     /* compress input file and append to gzip file */ | ||||||
|  |     do { | ||||||
|  |         /* get more input */ | ||||||
|  |         len = fd == -1 ? 0 : read(fd, in, CHUNK); | ||||||
|  |         if (len == -1) { | ||||||
|  |             fprintf(stderr, | ||||||
|  |                     "gzappend warning: error reading %s, skipping rest ...\n", | ||||||
|  |                     name); | ||||||
|  |             len = 0; | ||||||
|  |         } | ||||||
|  |         strm->avail_in = (unsigned)len; | ||||||
|  |         strm->next_in = in; | ||||||
|  |         if (len) strm->adler = crc32(strm->adler, in, (unsigned)len); | ||||||
|  |  | ||||||
|  |         /* compress and write all available output */ | ||||||
|  |         do { | ||||||
|  |             strm->avail_out = CHUNK; | ||||||
|  |             strm->next_out = out; | ||||||
|  |             ret = deflate(strm, last && len == 0 ? Z_FINISH : Z_NO_FLUSH); | ||||||
|  |             left = CHUNK - strm->avail_out; | ||||||
|  |             while (left) { | ||||||
|  |                 len = write(gd, out + CHUNK - strm->avail_out - left, left); | ||||||
|  |                 if (len == -1) bye("writing gzip file", ""); | ||||||
|  |                 left -= (unsigned)len; | ||||||
|  |             } | ||||||
|  |         } while (strm->avail_out == 0 && ret != Z_STREAM_END); | ||||||
|  |     } while (len != 0); | ||||||
|  |  | ||||||
|  |     /* write trailer after last entry */ | ||||||
|  |     if (last) { | ||||||
|  |         deflateEnd(strm); | ||||||
|  |         out[0] = (unsigned char)(strm->adler); | ||||||
|  |         out[1] = (unsigned char)(strm->adler >> 8); | ||||||
|  |         out[2] = (unsigned char)(strm->adler >> 16); | ||||||
|  |         out[3] = (unsigned char)(strm->adler >> 24); | ||||||
|  |         out[4] = (unsigned char)(strm->total_in); | ||||||
|  |         out[5] = (unsigned char)(strm->total_in >> 8); | ||||||
|  |         out[6] = (unsigned char)(strm->total_in >> 16); | ||||||
|  |         out[7] = (unsigned char)(strm->total_in >> 24); | ||||||
|  |         len = 8; | ||||||
|  |         do { | ||||||
|  |             ret = write(gd, out + 8 - len, len); | ||||||
|  |             if (ret == -1) bye("writing gzip file", ""); | ||||||
|  |             len -= ret; | ||||||
|  |         } while (len); | ||||||
|  |         close(gd); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /* clean up and return */ | ||||||
|  |     free(out); | ||||||
|  |     if (in != NULL) free(in); | ||||||
|  |     if (fd > 0) close(fd); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* process the compression level option if present, scan the gzip file, and | ||||||
|  |    append the specified files, or append the data from stdin if no other file | ||||||
|  |    names are provided on the command line -- the gzip file must be writable | ||||||
|  |    and seekable */ | ||||||
|  | int main(int argc, char **argv) | ||||||
|  | { | ||||||
|  |     int gd, level; | ||||||
|  |     z_stream strm; | ||||||
|  |  | ||||||
|  |     /* ignore command name */ | ||||||
|  |     argv++; | ||||||
|  |  | ||||||
|  |     /* provide usage if no arguments */ | ||||||
|  |     if (*argv == NULL) { | ||||||
|  |         printf("gzappend 1.1 (4 Nov 2003) Copyright (C) 2003 Mark Adler\n"); | ||||||
|  |         printf( | ||||||
|  |             "usage: gzappend [-level] file.gz [ addthis [ andthis ... ]]\n"); | ||||||
|  |         return 0; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /* set compression level */ | ||||||
|  |     level = Z_DEFAULT_COMPRESSION; | ||||||
|  |     if (argv[0][0] == '-') { | ||||||
|  |         if (argv[0][1] < '0' || argv[0][1] > '9' || argv[0][2] != 0) | ||||||
|  |             bye("invalid compression level", ""); | ||||||
|  |         level = argv[0][1] - '0'; | ||||||
|  |         if (*++argv == NULL) bye("no gzip file name after options", ""); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /* prepare to append to gzip file */ | ||||||
|  |     gd = gzscan(*argv++, &strm, level); | ||||||
|  |  | ||||||
|  |     /* append files on command line, or from stdin if none */ | ||||||
|  |     if (*argv == NULL) | ||||||
|  |         gztack(NULL, gd, &strm, 1); | ||||||
|  |     else | ||||||
|  |         do { | ||||||
|  |             gztack(*argv, gd, &strm, argv[1] == NULL); | ||||||
|  |         } while (*++argv != NULL); | ||||||
|  |     return 0; | ||||||
|  | } | ||||||
| @@ -9,7 +9,7 @@ | |||||||
| #define MAXBITS 15 | #define MAXBITS 15 | ||||||
|  |  | ||||||
| const char inflate9_copyright[] = | const char inflate9_copyright[] = | ||||||
|    " inflate9 1.2.0.7 Copyright 1995-2003 Mark Adler "; |    " inflate9 1.2.0.8 Copyright 1995-2003 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 | ||||||
| @@ -64,7 +64,7 @@ unsigned short FAR *work; | |||||||
|     static const unsigned short lext[31] = { /* Length codes 257..285 extra */ |     static const unsigned short lext[31] = { /* Length codes 257..285 extra */ | ||||||
|         128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, |         128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, | ||||||
|         130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132, |         130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132, | ||||||
|         133, 133, 133, 133, 144, 71, 69}; |         133, 133, 133, 133, 144, 76, 203}; | ||||||
|     static const unsigned short dbase[32] = { /* Distance codes 0..31 base */ |     static const unsigned short dbase[32] = { /* Distance codes 0..31 base */ | ||||||
|         1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, |         1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, | ||||||
|         65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, |         65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ unit zlibpas; | |||||||
| interface | interface | ||||||
|  |  | ||||||
| const | const | ||||||
|   ZLIB_VERSION = '1.2.0'; |   ZLIB_VERSION = '1.2.1'; | ||||||
|  |  | ||||||
| type | type | ||||||
|   alloc_func = function(opaque: Pointer; items, size: Integer): Pointer; |   alloc_func = function(opaque: Pointer; items, size: Integer): Pointer; | ||||||
| @@ -97,6 +97,7 @@ function deflateCopy(var dest, source: z_stream): Integer; | |||||||
| function deflateReset(var strm: z_stream): Integer; | function deflateReset(var strm: z_stream): Integer; | ||||||
| function deflateParams(var strm: z_stream; level, strategy: Integer): Integer; | function deflateParams(var strm: z_stream; level, strategy: Integer): Integer; | ||||||
| function deflateBound(var strm: z_stream; sourceLen: LongInt): LongInt; | function deflateBound(var strm: z_stream; sourceLen: LongInt): LongInt; | ||||||
|  | function deflatePrime(var strm: z_stream; bits, value: Integer): Integer; | ||||||
| function inflateInit2(var strm: z_stream; windowBits: Integer): Integer; | function inflateInit2(var strm: z_stream; windowBits: Integer): Integer; | ||||||
| function inflateSetDictionary(var strm: z_stream; const dictionary: PChar; | function inflateSetDictionary(var strm: z_stream; const dictionary: PChar; | ||||||
|                               dictLength: Integer): Integer; |                               dictLength: Integer): Integer; | ||||||
|   | |||||||
| @@ -67,3 +67,94 @@ Declare Function gzclose Lib "ZLIB32.DLL" | |||||||
| -Jon Caruana | -Jon Caruana | ||||||
| jon-net@usa.net | jon-net@usa.net | ||||||
| Microsoft Sitebuilder Network Level 1 Member - HTML Writer's Guild Member | Microsoft Sitebuilder Network Level 1 Member - HTML Writer's Guild Member | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Here is another example from Michael <michael_borgsys@hotmail.com> that he | ||||||
|  | says conforms to the VB guidelines, and that solves the problem of not | ||||||
|  | knowing the uncompressed size by storing it at the end of the file: | ||||||
|  |  | ||||||
|  | 'Calling the functions: | ||||||
|  | 'bracket meaning: <parameter> [optional] {Range of possible values} | ||||||
|  | 'Call subCompressFile(<path with filename to compress> [, <path with | ||||||
|  | filename to write to>, [level of compression {1..9}]]) | ||||||
|  | 'Call subUncompressFile(<path with filename to compress>) | ||||||
|  |  | ||||||
|  | Option Explicit | ||||||
|  | Private lngpvtPcnSml As Long 'Stores value for 'lngPercentSmaller' | ||||||
|  | Private Const SUCCESS As Long = 0 | ||||||
|  | Private Const strFilExt As String = ".cpr" | ||||||
|  | Private Declare Function lngfncCpr Lib "zlib.dll" Alias "compress2" (ByRef | ||||||
|  | dest As Any, ByRef destLen As Any, ByRef src As Any, ByVal srcLen As Long, | ||||||
|  | ByVal level As Integer) As Long | ||||||
|  | Private Declare Function lngfncUcp Lib "zlib.dll" Alias "uncompress" (ByRef | ||||||
|  | dest As Any, ByRef destLen As Any, ByRef src As Any, ByVal srcLen As Long) | ||||||
|  | As Long | ||||||
|  |  | ||||||
|  | Public Sub subCompressFile(ByVal strargOriFilPth As String, Optional ByVal | ||||||
|  | strargCprFilPth As String, Optional ByVal intLvl As Integer = 9) | ||||||
|  |     Dim strCprPth As String | ||||||
|  |     Dim lngOriSiz As Long | ||||||
|  |     Dim lngCprSiz As Long | ||||||
|  |     Dim bytaryOri() As Byte | ||||||
|  |     Dim bytaryCpr() As Byte | ||||||
|  |     lngOriSiz = FileLen(strargOriFilPth) | ||||||
|  |     ReDim bytaryOri(lngOriSiz - 1) | ||||||
|  |     Open strargOriFilPth For Binary Access Read As #1 | ||||||
|  |         Get #1, , bytaryOri() | ||||||
|  |     Close #1 | ||||||
|  |     strCprPth = IIf(strargCprFilPth = "", strargOriFilPth, strargCprFilPth) | ||||||
|  | 'Select file path and name | ||||||
|  |     strCprPth = strCprPth & IIf(Right(strCprPth, Len(strFilExt)) = | ||||||
|  | strFilExt, "", strFilExt) 'Add file extension if not exists | ||||||
|  |     lngCprSiz = (lngOriSiz * 1.01) + 12 'Compression needs temporary a bit | ||||||
|  | more space then original file size | ||||||
|  |     ReDim bytaryCpr(lngCprSiz - 1) | ||||||
|  |     If lngfncCpr(bytaryCpr(0), lngCprSiz, bytaryOri(0), lngOriSiz, intLvl) = | ||||||
|  | SUCCESS Then | ||||||
|  |         lngpvtPcnSml = (1# - (lngCprSiz / lngOriSiz)) * 100 | ||||||
|  |         ReDim Preserve bytaryCpr(lngCprSiz - 1) | ||||||
|  |         Open strCprPth For Binary Access Write As #1 | ||||||
|  |             Put #1, , bytaryCpr() | ||||||
|  |             Put #1, , lngOriSiz 'Add the the original size value to the end | ||||||
|  | (last 4 bytes) | ||||||
|  |         Close #1 | ||||||
|  |     Else | ||||||
|  |         MsgBox "Compression error" | ||||||
|  |     End If | ||||||
|  |     Erase bytaryCpr | ||||||
|  |     Erase bytaryOri | ||||||
|  | End Sub | ||||||
|  |  | ||||||
|  | Public Sub subUncompressFile(ByVal strargFilPth As String) | ||||||
|  |     Dim bytaryCpr() As Byte | ||||||
|  |     Dim bytaryOri() As Byte | ||||||
|  |     Dim lngOriSiz As Long | ||||||
|  |     Dim lngCprSiz As Long | ||||||
|  |     Dim strOriPth As String | ||||||
|  |     lngCprSiz = FileLen(strargFilPth) | ||||||
|  |     ReDim bytaryCpr(lngCprSiz - 1) | ||||||
|  |     Open strargFilPth For Binary Access Read As #1 | ||||||
|  |         Get #1, , bytaryCpr() | ||||||
|  |     Close #1 | ||||||
|  |     'Read the original file size value: | ||||||
|  |     lngOriSiz = bytaryCpr(lngCprSiz - 1) * (2 ^ 24) _ | ||||||
|  |               + bytaryCpr(lngCprSiz - 2) * (2 ^ 16) _ | ||||||
|  |               + bytaryCpr(lngCprSiz - 3) * (2 ^ 8) _ | ||||||
|  |               + bytaryCpr(lngCprSiz - 4) | ||||||
|  |     ReDim Preserve bytaryCpr(lngCprSiz - 5) 'Cut of the original size value | ||||||
|  |     ReDim bytaryOri(lngOriSiz - 1) | ||||||
|  |     If lngfncUcp(bytaryOri(0), lngOriSiz, bytaryCpr(0), lngCprSiz) = SUCCESS | ||||||
|  | Then | ||||||
|  |         strOriPth = Left(strargFilPth, Len(strargFilPth) - Len(strFilExt)) | ||||||
|  |         Open strOriPth For Binary Access Write As #1 | ||||||
|  |             Put #1, , bytaryOri() | ||||||
|  |         Close #1 | ||||||
|  |     Else | ||||||
|  |         MsgBox "Uncompression error" | ||||||
|  |     End If | ||||||
|  |     Erase bytaryCpr | ||||||
|  |     Erase bytaryOri | ||||||
|  | End Sub | ||||||
|  | Public Property Get lngPercentSmaller() As Long | ||||||
|  |     lngPercentSmaller = lngpvtPcnSml | ||||||
|  | End Property | ||||||
|   | |||||||
| @@ -54,6 +54,7 @@ EXPORTS | |||||||
|         gzclearerr                               @48 |         gzclearerr                               @48 | ||||||
|         gzungetc                                 @49 |         gzungetc                                 @49 | ||||||
|         zlibCompileFlags                         @50 |         zlibCompileFlags                         @50 | ||||||
|  |         deflatePrime                             @51 | ||||||
|  |  | ||||||
|         unzOpen                                  @61 |         unzOpen                                  @61 | ||||||
|         unzClose                                 @62 |         unzClose                                 @62 | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								deflate.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								deflate.c
									
									
									
									
									
								
							| @@ -52,7 +52,7 @@ | |||||||
| #include "deflate.h" | #include "deflate.h" | ||||||
|  |  | ||||||
| const char deflate_copyright[] = | const char deflate_copyright[] = | ||||||
|    " deflate 1.2.0.7 Copyright 1995-2003 Jean-loup Gailly "; |    " deflate 1.2.0.8 Copyright 1995-2003 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 | ||||||
| @@ -390,6 +390,18 @@ int ZEXPORT deflateReset (strm) | |||||||
|     return Z_OK; |     return Z_OK; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /* ========================================================================= */ | ||||||
|  | int ZEXPORT deflatePrime (strm, bits, value) | ||||||
|  |     z_streamp strm; | ||||||
|  |     int bits; | ||||||
|  |     int value; | ||||||
|  | { | ||||||
|  |     if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; | ||||||
|  |     strm->state->bi_valid = bits; | ||||||
|  |     strm->state->bi_buf = (ush)(value & ((1 << bits) - 1)); | ||||||
|  |     return Z_OK; | ||||||
|  | } | ||||||
|  |  | ||||||
| /* ========================================================================= */ | /* ========================================================================= */ | ||||||
| int ZEXPORT deflateParams(strm, level, strategy) | int ZEXPORT deflateParams(strm, level, strategy) | ||||||
|     z_streamp strm; |     z_streamp strm; | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								gzio.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								gzio.c
									
									
									
									
									
								
							| @@ -889,7 +889,13 @@ int ZEXPORT gzeof (file) | |||||||
| { | { | ||||||
|     gz_stream *s = (gz_stream*)file; |     gz_stream *s = (gz_stream*)file; | ||||||
|  |  | ||||||
|     return (s == NULL || s->mode != 'r') ? 0 : s->z_eof; |     /* With concatenated compressed files that can have embedded | ||||||
|  |      * crc trailers, z_eof is no longer the only/best indicator of EOF | ||||||
|  |      * on a gz_stream. Handle end-of-stream error explicitly here. | ||||||
|  |      */ | ||||||
|  |     if (s == NULL || s->mode != 'r') return 0; | ||||||
|  |     if (s->z_eof) return 1; | ||||||
|  |     return s->z_err == Z_STREAM_END; | ||||||
| } | } | ||||||
|  |  | ||||||
| /* =========================================================================== | /* =========================================================================== | ||||||
|   | |||||||
| @@ -568,7 +568,7 @@ int flush; | |||||||
|         switch (state->mode) { |         switch (state->mode) { | ||||||
|         case HEAD: |         case HEAD: | ||||||
|             if (state->wrap == 0) { |             if (state->wrap == 0) { | ||||||
|                 state->mode = TYPE; |                 state->mode = TYPEDO; | ||||||
|                 break; |                 break; | ||||||
|             } |             } | ||||||
|             NEEDBITS(16); |             NEEDBITS(16); | ||||||
| @@ -1074,8 +1074,8 @@ int flush; | |||||||
|     if (state->wrap && out) |     if (state->wrap && out) | ||||||
|         strm->adler = state->check = |         strm->adler = state->check = | ||||||
|             UPDATE(state->check, strm->next_out - out, out); |             UPDATE(state->check, strm->next_out - out, out); | ||||||
|     strm->data_type = state->bits + (state->last ? 8 : 0) + |     strm->data_type = state->bits + (state->last ? 64 : 0) + | ||||||
|                       (state->mode == TYPE ? 16 : 0); |                       (state->mode == TYPE ? 128 : 0); | ||||||
|     if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK) |     if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK) | ||||||
|         ret = Z_BUF_ERROR; |         ret = Z_BUF_ERROR; | ||||||
|     return ret; |     return ret; | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
| #define MAXBITS 15 | #define MAXBITS 15 | ||||||
|  |  | ||||||
| const char inflate_copyright[] = | const char inflate_copyright[] = | ||||||
|    " inflate 1.2.0.7 Copyright 1995-2003 Mark Adler "; |    " inflate 1.2.0.8 Copyright 1995-2003 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 | ||||||
| @@ -62,7 +62,7 @@ unsigned short FAR *work; | |||||||
|         35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; |         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 */ |     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, |         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, 71, 69}; |         19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 76, 203}; | ||||||
|     static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ |     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, |         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, |         257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, | ||||||
|   | |||||||
| @@ -31,7 +31,7 @@ | |||||||
| #  include <sys/stat.h> | #  include <sys/stat.h> | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #if defined(MSDOS) || defined(OS2) || defined(WIN32) | #if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__) | ||||||
| #  include <fcntl.h> | #  include <fcntl.h> | ||||||
| #  include <io.h> | #  include <io.h> | ||||||
| #  define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) | #  define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) | ||||||
|   | |||||||
| @@ -25,10 +25,10 @@ | |||||||
|       <QPG:Files> |       <QPG:Files> | ||||||
|          <QPG:Add file="../zconf.h" install="/opt/include/" user="root:sys" permission="644"/> |          <QPG:Add file="../zconf.h" install="/opt/include/" user="root:sys" permission="644"/> | ||||||
|          <QPG:Add file="../zlib.h" install="/opt/include/" user="root:sys" permission="644"/> |          <QPG:Add file="../zlib.h" install="/opt/include/" user="root:sys" permission="644"/> | ||||||
|          <QPG:Add file="../libz.so.1.2.0.7" install="/opt/lib/" user="root:bin" permission="644"/> |          <QPG:Add file="../libz.so.1.2.0.8" install="/opt/lib/" user="root:bin" permission="644"/> | ||||||
|          <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.0.7"/> |          <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.0.8"/> | ||||||
|          <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.0.7"/> |          <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.0.8"/> | ||||||
|          <QPG:Add file="../libz.so.1.2.0.7" install="/opt/lib/" component="slib"/> |          <QPG:Add file="../libz.so.1.2.0.8" install="/opt/lib/" component="slib"/> | ||||||
|       </QPG:Files> |       </QPG:Files> | ||||||
|  |  | ||||||
|       <QPG:PackageFilter> |       <QPG:PackageFilter> | ||||||
| @@ -63,7 +63,7 @@ | |||||||
|             </QPM:ProductDescription> |             </QPM:ProductDescription> | ||||||
|  |  | ||||||
|             <QPM:ReleaseDescription> |             <QPM:ReleaseDescription> | ||||||
|                <QPM:ReleaseVersion>1.2.0.7</QPM:ReleaseVersion> |                <QPM:ReleaseVersion>1.2.0.8</QPM:ReleaseVersion> | ||||||
|                <QPM:ReleaseUrgency>Medium</QPM:ReleaseUrgency> |                <QPM:ReleaseUrgency>Medium</QPM:ReleaseUrgency> | ||||||
|                <QPM:ReleaseStability>Stable</QPM:ReleaseStability> |                <QPM:ReleaseStability>Stable</QPM:ReleaseStability> | ||||||
|                <QPM:ReleaseNoteMinor></QPM:ReleaseNoteMinor> |                <QPM:ReleaseNoteMinor></QPM:ReleaseNoteMinor> | ||||||
|   | |||||||
| @@ -334,9 +334,9 @@ in the zlib distribution, or at the following location: | |||||||
|     link them in ZLIB1.DLL, and export them? |     link them in ZLIB1.DLL, and export them? | ||||||
|  |  | ||||||
|   - No.  A legitimate build of ZLIB1.DLL must not include code |   - No.  A legitimate build of ZLIB1.DLL must not include code | ||||||
|     that does not originate from the official zlib sources.  But |     that does not originate from the official zlib source code. | ||||||
|     you can make your own private build, and give it a different |     But you can make your own private DLL build, under a different | ||||||
|     name, as suggested in the previous answer. |     file name, as suggested in the previous answer. | ||||||
|  |  | ||||||
|     For example, in Borland Delphi and C++ Builder, zlib is a part |     For example, in Borland Delphi and C++ Builder, zlib is a part | ||||||
|     of the standard VCL library.  If an application links to VCL |     of the standard VCL library.  If an application links to VCL | ||||||
| @@ -345,7 +345,16 @@ in the zlib distribution, or at the following location: | |||||||
|     incompatible ZLIB1.DLL. |     incompatible ZLIB1.DLL. | ||||||
|  |  | ||||||
|  |  | ||||||
| 14. I made my own ZLIB1.DLL build.  Can I test it for compliance? | 14. May I remove some functionality out of ZLIB1.DLL, by enabling | ||||||
|  |     macros like NO_GZCOMPRESS or NO_GZIP at compile time? | ||||||
|  |  | ||||||
|  |   - No.  A legitimate build of ZLIB1.DLL must provide the complete | ||||||
|  |     zlib functionality, as implemented in the official zlib source | ||||||
|  |     code.  But you can make your own private DLL build, under a | ||||||
|  |     different file name, as suggested in the previous answer. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 15. I made my own ZLIB1.DLL build.  Can I test it for compliance? | ||||||
|  |  | ||||||
|   - We prefer that you download the official DLL from the zlib |   - We prefer that you download the official DLL from the zlib | ||||||
|     web site.  If you need something peculiar from this DLL, you |     web site.  If you need something peculiar from this DLL, you | ||||||
| @@ -356,3 +365,7 @@ in the zlib distribution, or at the following location: | |||||||
|     Running these test programs is not a guarantee of compliance, |     Running these test programs is not a guarantee of compliance, | ||||||
|     but a failure can imply a detected problem. |     but a failure can imply a detected problem. | ||||||
|  |  | ||||||
|  | ** | ||||||
|  |  | ||||||
|  | This document is written and maintained by | ||||||
|  | Cosmin Truta <cosmint@cs.ubbcluj.ro> | ||||||
|   | |||||||
| @@ -14,6 +14,7 @@ EXPORTS | |||||||
|     deflateReset |     deflateReset | ||||||
|     deflateParams |     deflateParams | ||||||
|     deflateBound |     deflateBound | ||||||
|  |     deflatePrime | ||||||
|     inflateSetDictionary |     inflateSetDictionary | ||||||
|     inflateSync |     inflateSync | ||||||
|     inflateCopy |     inflateCopy | ||||||
|   | |||||||
| @@ -5,8 +5,8 @@ VS_VERSION_INFO		VERSIONINFO | |||||||
| #else | #else | ||||||
| VS_VERSION_INFO		VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE | VS_VERSION_INFO		VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE | ||||||
| #endif | #endif | ||||||
|   FILEVERSION		1,2,0,7 |   FILEVERSION		1,2,0,8 | ||||||
|   PRODUCTVERSION	1,2,0,7 |   PRODUCTVERSION	1,2,0,8 | ||||||
|   FILEFLAGSMASK		VS_FFI_FILEFLAGSMASK |   FILEFLAGSMASK		VS_FFI_FILEFLAGSMASK | ||||||
| #ifdef _DEBUG | #ifdef _DEBUG | ||||||
|   FILEFLAGS		1 |   FILEFLAGS		1 | ||||||
| @@ -23,12 +23,12 @@ BEGIN | |||||||
|     //language ID = U.S. English, char set = Windows, Multilingual |     //language ID = U.S. English, char set = Windows, Multilingual | ||||||
|     BEGIN |     BEGIN | ||||||
|       VALUE "FileDescription",	"zlib data compression library\0" |       VALUE "FileDescription",	"zlib data compression library\0" | ||||||
|       VALUE "FileVersion",	"1.2.0.7\0" |       VALUE "FileVersion",	"1.2.0.8\0" | ||||||
|       VALUE "InternalName",	"zlib1.dll\0" |       VALUE "InternalName",	"zlib1.dll\0" | ||||||
|       VALUE "LegalCopyright",	"(C) 1995-2003 Jean-loup Gailly & Mark Adler\0" |       VALUE "LegalCopyright",	"(C) 1995-2003 Jean-loup Gailly & Mark Adler\0" | ||||||
|       VALUE "OriginalFilename",	"zlib1.dll\0" |       VALUE "OriginalFilename",	"zlib1.dll\0" | ||||||
|       VALUE "ProductName",	"zlib\0" |       VALUE "ProductName",	"zlib\0" | ||||||
|       VALUE "ProductVersion",	"1.2.0.7\0" |       VALUE "ProductVersion",	"1.2.0.8\0" | ||||||
|       VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" |       VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" | ||||||
|     END |     END | ||||||
|   END |   END | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								zconf.h
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								zconf.h
									
									
									
									
									
								
							| @@ -23,6 +23,7 @@ | |||||||
| #  define deflateSetDictionary z_deflateSetDictionary | #  define deflateSetDictionary z_deflateSetDictionary | ||||||
| #  define deflateCopy   z_deflateCopy | #  define deflateCopy   z_deflateCopy | ||||||
| #  define deflateReset  z_deflateReset | #  define deflateReset  z_deflateReset | ||||||
|  | #  define deflatePrime  z_deflatePrime | ||||||
| #  define deflateParams z_deflateParams | #  define deflateParams z_deflateParams | ||||||
| #  define deflateBound  z_deflateBound | #  define deflateBound  z_deflateBound | ||||||
| #  define inflateInit2_ z_inflateInit2_ | #  define inflateInit2_ z_inflateInit2_ | ||||||
| @@ -105,6 +106,10 @@ | |||||||
| #  define STDC | #  define STDC | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | #if defined(__OS400__) && !defined(STDC)    /* iSeries (formerly AS/400). */ | ||||||
|  | #  define STDC | ||||||
|  | #endif | ||||||
|  |  | ||||||
| #ifndef STDC | #ifndef STDC | ||||||
| #  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ | #  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ | ||||||
| #    define const       /* note: need a more gentle solution here */ | #    define const       /* note: need a more gentle solution here */ | ||||||
| @@ -287,11 +292,15 @@ typedef uLong FAR uLongf; | |||||||
| #  define  z_off_t long | #  define  z_off_t long | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #if defined(__MVS__) | #if defined(__OS400__) | ||||||
| #define NO_vsnprintf | #define NO_vsnprintf | ||||||
| #ifdef FAR |  | ||||||
| #undef FAR |  | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | #if defined(__MVS__) | ||||||
|  | #  define NO_vsnprintf | ||||||
|  | #  ifdef FAR | ||||||
|  | #    undef FAR | ||||||
|  | #  endif | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| /* MVS linker does not support external names larger than 8 bytes */ | /* MVS linker does not support external names larger than 8 bytes */ | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								zconf.in.h
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								zconf.in.h
									
									
									
									
									
								
							| @@ -23,6 +23,7 @@ | |||||||
| #  define deflateSetDictionary z_deflateSetDictionary | #  define deflateSetDictionary z_deflateSetDictionary | ||||||
| #  define deflateCopy   z_deflateCopy | #  define deflateCopy   z_deflateCopy | ||||||
| #  define deflateReset  z_deflateReset | #  define deflateReset  z_deflateReset | ||||||
|  | #  define deflatePrime  z_deflatePrime | ||||||
| #  define deflateParams z_deflateParams | #  define deflateParams z_deflateParams | ||||||
| #  define deflateBound  z_deflateBound | #  define deflateBound  z_deflateBound | ||||||
| #  define inflateInit2_ z_inflateInit2_ | #  define inflateInit2_ z_inflateInit2_ | ||||||
| @@ -105,6 +106,10 @@ | |||||||
| #  define STDC | #  define STDC | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | #if defined(__OS400__) && !defined(STDC)    /* iSeries (formerly AS/400). */ | ||||||
|  | #  define STDC | ||||||
|  | #endif | ||||||
|  |  | ||||||
| #ifndef STDC | #ifndef STDC | ||||||
| #  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ | #  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ | ||||||
| #    define const       /* note: need a more gentle solution here */ | #    define const       /* note: need a more gentle solution here */ | ||||||
| @@ -287,11 +292,15 @@ typedef uLong FAR uLongf; | |||||||
| #  define  z_off_t long | #  define  z_off_t long | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #if defined(__MVS__) | #if defined(__OS400__) | ||||||
| #define NO_vsnprintf | #define NO_vsnprintf | ||||||
| #ifdef FAR |  | ||||||
| #undef FAR |  | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | #if defined(__MVS__) | ||||||
|  | #  define NO_vsnprintf | ||||||
|  | #  ifdef FAR | ||||||
|  | #    undef FAR | ||||||
|  | #  endif | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| /* MVS linker does not support external names larger than 8 bytes */ | /* MVS linker does not support external names larger than 8 bytes */ | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								zlib.3
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								zlib.3
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| .TH ZLIB 3 "21 September 2003" | .TH ZLIB 3 "4 November 2003" | ||||||
| .SH NAME | .SH NAME | ||||||
| zlib \- compression/decompression library | zlib \- compression/decompression library | ||||||
| .SH SYNOPSIS | .SH SYNOPSIS | ||||||
| @@ -133,7 +133,7 @@ before asking for help. | |||||||
| Send questions and/or comments to zlib@gzip.org, | Send questions and/or comments to zlib@gzip.org, | ||||||
| or (for the Windows DLL version) to Gilles Vollant (info@winimage.com). | or (for the Windows DLL version) to Gilles Vollant (info@winimage.com). | ||||||
| .SH AUTHORS | .SH AUTHORS | ||||||
| Version 1.2.0.7 | Version 1.2.0.8 | ||||||
| Copyright (C) 1995-2003 Jean-loup Gailly (jloup@gzip.org) | Copyright (C) 1995-2003 Jean-loup Gailly (jloup@gzip.org) | ||||||
| and Mark Adler (madler@alumni.caltech.edu). | and Mark Adler (madler@alumni.caltech.edu). | ||||||
| .LP | .LP | ||||||
|   | |||||||
							
								
								
									
										35
									
								
								zlib.h
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								zlib.h
									
									
									
									
									
								
							| @@ -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.2.0.7, September 21st, 2003 |   version 1.2.0.8, November 4th, 2003 | ||||||
|  |  | ||||||
|   Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler |   Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler | ||||||
|  |  | ||||||
| @@ -37,8 +37,8 @@ | |||||||
| extern "C" { | extern "C" { | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #define ZLIB_VERSION "1.2.0.7" | #define ZLIB_VERSION "1.2.0.8" | ||||||
| #define ZLIB_VERNUM 0x1207 | #define ZLIB_VERNUM 0x1208 | ||||||
|  |  | ||||||
| /* | /* | ||||||
|      The 'zlib' compression library provides in-memory compression and |      The 'zlib' compression library provides in-memory compression and | ||||||
| @@ -174,7 +174,7 @@ typedef z_stream FAR *z_streamp; | |||||||
| #define Z_BINARY   0 | #define Z_BINARY   0 | ||||||
| #define Z_ASCII    1 | #define Z_ASCII    1 | ||||||
| #define Z_UNKNOWN  2 | #define Z_UNKNOWN  2 | ||||||
| /* Possible values of the data_type field */ | /* Possible values of the data_type field (though see inflate()) */ | ||||||
|  |  | ||||||
| #define Z_DEFLATED   8 | #define Z_DEFLATED   8 | ||||||
| /* The deflate compression method (the only one supported in this version) */ | /* The deflate compression method (the only one supported in this version) */ | ||||||
| @@ -373,12 +373,15 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); | |||||||
|  |  | ||||||
|     The Z_BLOCK option assists in appending to or combining deflate streams. |     The Z_BLOCK option assists in appending to or combining deflate streams. | ||||||
|   Also to assist in this, on return inflate() will set strm->data_type to the |   Also to assist in this, on return inflate() will set strm->data_type to the | ||||||
|   number of unused bits in the last byte taken from strm->next_in, plus eight |   number of unused bits in the last byte taken from strm->next_in, plus 64 | ||||||
|   if inflate() is currently decoding the last block in the deflate stream, |   if inflate() is currently decoding the last block in the deflate stream, | ||||||
|   plus 16 if inflate() returned immediately after decoding an end-of-block |   plus 128 if inflate() returned immediately after decoding an end-of-block | ||||||
|   code or decoding the complete header up just before the first byte of the |   code or decoding the complete header up to just before the first byte of the | ||||||
|   deflate stream. The end-of-block will not be indicated until all of the |   deflate stream. The end-of-block will not be indicated until all of the | ||||||
|   uncompressed data from that block has been written to strm->next_out. |   uncompressed data from that block has been written to strm->next_out.  The | ||||||
|  |   number of unused bits may in general be greater than seven, except when | ||||||
|  |   bit 7 of data_type is set, in which case the number of unused bits will be | ||||||
|  |   less than eight. | ||||||
|  |  | ||||||
|     inflate() should normally be called until it returns Z_STREAM_END or an |     inflate() should normally be called until it returns Z_STREAM_END or an | ||||||
|   error. However if all decompression is to be performed in a single step |   error. However if all decompression is to be performed in a single step | ||||||
| @@ -598,6 +601,22 @@ ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, | |||||||
|    for deflation in a single pass, and so would be called before deflate(). |    for deflation in a single pass, and so would be called before deflate(). | ||||||
| */ | */ | ||||||
|  |  | ||||||
|  | ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, | ||||||
|  |                                      int bits, | ||||||
|  |                                      int value)); | ||||||
|  | /* | ||||||
|  |      deflatePrime() inserts bits in the deflate output stream.  The intent | ||||||
|  |   is that this function is used to start off the deflate output with the | ||||||
|  |   bits leftover from a previous deflate stream when appending to it.  As such, | ||||||
|  |   this function can only be used for raw deflate, and must be used before the | ||||||
|  |   first deflate() call after a deflateInit2() or deflateReset().  bits must be | ||||||
|  |   less than or equal to 16, and that many of the least significant bits of | ||||||
|  |   value will be inserted in the output. | ||||||
|  |  | ||||||
|  |       deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source | ||||||
|  |    stream state was inconsistent. | ||||||
|  | */ | ||||||
|  |  | ||||||
| /* | /* | ||||||
| ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, | ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, | ||||||
|                                      int  windowBits)); |                                      int  windowBits)); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Mark Adler
					Mark Adler