Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ff11b0a61f | ||
|
|
e26a448e96 |
29
ChangeLog
29
ChangeLog
@@ -1,6 +1,35 @@
|
|||||||
|
|
||||||
ChangeLog file for zlib
|
ChangeLog file for zlib
|
||||||
|
|
||||||
|
Changes in 1.0.4 (24 Jul 96)
|
||||||
|
- In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF
|
||||||
|
bit, so the decompressor could decompress all the correct data but went
|
||||||
|
on to attempt decompressing extra garbage data. This affected minigzip too.
|
||||||
|
- zlibVersion and gzerror return const char* (needed for DLL)
|
||||||
|
- port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno)
|
||||||
|
- use z_error only for DEBUG (avoid problem with DLLs)
|
||||||
|
|
||||||
|
Changes in 1.0.3 (2 Jul 96)
|
||||||
|
- use z_streamp instead of z_stream *, which is now a far pointer in MSDOS
|
||||||
|
small and medium models; this makes the library incompatible with previous
|
||||||
|
versions for these models. (No effect in large model or on other systems.)
|
||||||
|
- return OK instead of BUF_ERROR if previous deflate call returned with
|
||||||
|
avail_out as zero but there is nothing to do
|
||||||
|
- added memcmp for non STDC compilers
|
||||||
|
- define NO_DUMMY_DECL for more Mac compilers (.h files merged incorrectly)
|
||||||
|
- define __32BIT__ if __386__ or i386 is defined (pb. with Watcom and SCO)
|
||||||
|
- better check for 16-bit mode MSC (avoids problem with Symantec)
|
||||||
|
|
||||||
|
Changes in 1.0.2 (23 May 96)
|
||||||
|
- added Windows DLL support
|
||||||
|
- added a function zlibVersion (for the DLL support)
|
||||||
|
- fixed declarations using Bytef in infutil.c (pb with MSDOS medium model)
|
||||||
|
- Bytef is define's instead of typedef'd only for Borland C
|
||||||
|
- avoid reading uninitialized memory in example.c
|
||||||
|
- mention in README that the zlib format is now RFC1950
|
||||||
|
- updated Makefile.dj2
|
||||||
|
- added algorithm.doc
|
||||||
|
|
||||||
Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion]
|
Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion]
|
||||||
- fix array overlay in deflate.c which sometimes caused bad compressed data
|
- fix array overlay in deflate.c which sometimes caused bad compressed data
|
||||||
- fix inflate bug with empty stored block
|
- fix inflate bug with empty stored block
|
||||||
|
|||||||
5
INDEX
5
INDEX
@@ -7,12 +7,17 @@ Makefile.bor makefile for Borland C/C++ 16-bit
|
|||||||
Makefile.dj2 makefile for DJGPP 2.x
|
Makefile.dj2 makefile for DJGPP 2.x
|
||||||
Makefile.in makefile for Unix (template for configure)
|
Makefile.in makefile for Unix (template for configure)
|
||||||
Makefile.msc makefile for Microsoft C 16-bit
|
Makefile.msc makefile for Microsoft C 16-bit
|
||||||
|
Makefile.riscos makefile for RISCOS
|
||||||
Makefile.sas makefile for Amiga SAS/C
|
Makefile.sas makefile for Amiga SAS/C
|
||||||
Makefile.tc makefile for Turbo C
|
Makefile.tc makefile for Turbo C
|
||||||
Makefile.wat makefile for Watcom C
|
Makefile.wat makefile for Watcom C
|
||||||
README guess what
|
README guess what
|
||||||
|
algorithm.doc description of the compression & decompression algorithms
|
||||||
configure configure script for Unix
|
configure configure script for Unix
|
||||||
descrip.mms makefile for Vax/VMS
|
descrip.mms makefile for Vax/VMS
|
||||||
|
zlib.def definition file for Windows DLL
|
||||||
|
zlib.rc definition file for Windows DLL
|
||||||
|
|
||||||
|
|
||||||
zlib public header files (must be kept):
|
zlib public header files (must be kept):
|
||||||
zconf.h
|
zconf.h
|
||||||
|
|||||||
9
Makefile
9
Makefile
@@ -22,7 +22,7 @@ CFLAGS=-O
|
|||||||
LDFLAGS=-L. -lz
|
LDFLAGS=-L. -lz
|
||||||
LDSHARED=$(CC)
|
LDSHARED=$(CC)
|
||||||
|
|
||||||
VER=1.0.1
|
VER=1.0.4
|
||||||
LIBS=libz.a
|
LIBS=libz.a
|
||||||
|
|
||||||
AR=ar rc
|
AR=ar rc
|
||||||
@@ -37,7 +37,8 @@ OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \
|
|||||||
|
|
||||||
TEST_OBJS = example.o minigzip.o
|
TEST_OBJS = example.o minigzip.o
|
||||||
|
|
||||||
DISTFILES = README INDEX ChangeLog configure Make*[a-z0-9] descrip.mms *.[ch]
|
DISTFILES = README INDEX ChangeLog configure Make*[a-z0-9] descrip.mms \
|
||||||
|
zlib.def zlib.rc algorithm.doc *.[ch]
|
||||||
|
|
||||||
all: example minigzip
|
all: example minigzip
|
||||||
|
|
||||||
@@ -85,8 +86,8 @@ clean:
|
|||||||
|
|
||||||
zip:
|
zip:
|
||||||
mv Makefile Makefile~; cp -p Makefile.in Makefile
|
mv Makefile Makefile~; cp -p Makefile.in Makefile
|
||||||
v=`sed -n -e 's/\./-/g' -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\
|
v=`sed -n -e 's/\.//g' -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\
|
||||||
zip -ul9 zlib-$$v $(DISTFILES)
|
zip -ul9 zlib$$v $(DISTFILES)
|
||||||
mv Makefile~ Makefile
|
mv Makefile~ Makefile
|
||||||
|
|
||||||
dist:
|
dist:
|
||||||
|
|||||||
62
Makefile.dj2
62
Makefile.dj2
@@ -2,32 +2,50 @@
|
|||||||
# Copyright (C) 1995-1996 Jean-loup Gailly.
|
# Copyright (C) 1995-1996 Jean-loup Gailly.
|
||||||
# For conditions of distribution and use, see copyright notice in zlib.h
|
# For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
|
|
||||||
# To compile and test, type:
|
# To compile, or to compile and test, type:
|
||||||
|
#
|
||||||
# make -fmakefile.dj2; make test -fmakefile.dj2
|
# make -fmakefile.dj2; make test -fmakefile.dj2
|
||||||
|
#
|
||||||
# To install libz.a, zconf.h and zlib.h in the djgpp directories, type:
|
# To install libz.a, zconf.h and zlib.h in the djgpp directories, type:
|
||||||
|
#
|
||||||
# make install -fmakefile.dj2
|
# make install -fmakefile.dj2
|
||||||
# after first defining LIBRARY_PATH and INCLUDE_PATH in djgpp.env for [make].
|
#
|
||||||
# Alternately these variables may be defined below.
|
# after first defining LIBRARY_PATH and INCLUDE_PATH in djgpp.env as
|
||||||
|
# in the sample below if the pattern of the DJGPP distribution is to
|
||||||
|
# be followed. Remember that, while <sp>'es around <=> are ignored in
|
||||||
|
# makefiles, they are *not* in batch files or in djgpp.env.
|
||||||
|
# - - - - -
|
||||||
|
# [make]
|
||||||
|
# INCLUDE_PATH=%\>;INCLUDE_PATH%%\DJDIR%\include
|
||||||
|
# LIBRARY_PATH=%\>;LIBRARY_PATH%%\DJDIR%\lib
|
||||||
|
# BUTT=-m486
|
||||||
|
# - - - - -
|
||||||
|
# Alternately, these variables may be defined below, overriding the values
|
||||||
|
# in djgpp.env, as
|
||||||
|
INCLUDE_PATH=c:\usr\include
|
||||||
|
|
||||||
CC=gcc
|
CC=gcc
|
||||||
|
|
||||||
#CFLAGS=-MMD -O
|
#CFLAGS=-MMD -O
|
||||||
#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
|
#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
|
||||||
#CFLAGS=-MMD -g -DDEBUG
|
#CFLAGS=-MMD -g -DDEBUG
|
||||||
CFLAGS=-MMD -O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
|
CFLAGS=-MMD -O3 $(BUTT) -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
|
||||||
-Wstrict-prototypes -Wmissing-prototypes
|
-Wstrict-prototypes -Wmissing-prototypes
|
||||||
|
|
||||||
|
# If cp.exe is not found, replace with copy /Y .
|
||||||
|
CP=cp -f
|
||||||
|
# If install.exe is not found, replace with $(CP).
|
||||||
INSTALL=install
|
INSTALL=install
|
||||||
|
# The default value of RM is "rm -f." If "rm.exe" is not found, uncomment:
|
||||||
|
# RM=del
|
||||||
LDLIBS=-L. -lz
|
LDLIBS=-L. -lz
|
||||||
LD=$(CC) -s -o
|
LD=$(CC) -s -o
|
||||||
LDSHARED=$(CC)
|
LDSHARED=$(CC)
|
||||||
|
|
||||||
VER=1.0
|
INCL=zlib.h zconf.h
|
||||||
LIBS=libz.a
|
LIBS=libz.a
|
||||||
|
|
||||||
AR=ar rcs
|
AR=ar rcs
|
||||||
# The default value of RM is "rm -f." If "rm.exe" is not found, uncomment:
|
|
||||||
# RM=del
|
|
||||||
|
|
||||||
prefix=/usr/local
|
prefix=/usr/local
|
||||||
exec_prefix = $(prefix)
|
exec_prefix = $(prefix)
|
||||||
@@ -37,10 +55,6 @@ OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \
|
|||||||
|
|
||||||
TEST_OBJS = example.o minigzip.o
|
TEST_OBJS = example.o minigzip.o
|
||||||
|
|
||||||
DISTFILES = README Change.Log configur Makefile.in Makefile Makefile.msc \
|
|
||||||
Makefile.bor Makefile.tc Make_vms.com descrip.mms zlib099.pat \
|
|
||||||
*.bak *.old *.[ch]
|
|
||||||
|
|
||||||
all: example.exe minigzip.exe
|
all: example.exe minigzip.exe
|
||||||
|
|
||||||
test: all
|
test: all
|
||||||
@@ -53,25 +67,25 @@ test: all
|
|||||||
libz.a: $(OBJS)
|
libz.a: $(OBJS)
|
||||||
$(AR) $@ $(OBJS)
|
$(AR) $@ $(OBJS)
|
||||||
|
|
||||||
libz.so.$(VER): $(OBJS)
|
|
||||||
$(LDSHARED) -o $@ $(OBJS)
|
|
||||||
rm -f libz.so; ln -s $@ libz.so
|
|
||||||
|
|
||||||
%.exe : %.o $(LIBS)
|
%.exe : %.o $(LIBS)
|
||||||
$(LD) $@ $< $(LDLIBS)
|
$(LD) $@ $< $(LDLIBS)
|
||||||
|
|
||||||
# INCLUDE_PATH and LIBRARY_PATH were set for [make] in djgpp.env
|
# INCLUDE_PATH and LIBRARY_PATH were set for [make] in djgpp.env .
|
||||||
|
|
||||||
install: $(LIBS)
|
.PHONY : uninstall clean
|
||||||
$(INSTALL) zlib.h zconf.h $(INCLUDE_PATH)
|
|
||||||
$(INSTALL) $(LIBS) $(LIBRARY_PATH)
|
install: $(INCL) $(LIBS)
|
||||||
|
-@if not exist $(INCLUDE_PATH)\nul mkdir $(INCLUDE_PATH)
|
||||||
|
-@if not exist $(LIBRARY_PATH)\nul mkdir $(LIBRARY_PATH)
|
||||||
|
for %%f in ($(INCL)) do $(INSTALL) %%f $(INCLUDE_PATH)
|
||||||
|
for %%p in ($(LIBS)) do $(INSTALL) %%p $(LIBRARY_PATH)
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
$(RM) $(LIBRARY_PATH)/$(LIBS)
|
for %%f in ($(INCL)) do $(RM) $(INCLUDE_PATH)\%%f
|
||||||
$(RM) $(INCLUDE_PATH)/zlib.h $(INCLUDE_PATH)/zconf.h
|
for %%p in ($(LIBS)) do $(RM) $(LIBRARY_PATH)\%%p
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) *.d *.o *.~ *.exe libz.a libz.so* foo.gz
|
for %%p in (*.d *.o *.exe libz.a libz.so* foo.gz) do $(RM) %%p
|
||||||
|
|
||||||
DEPS := $(wildcard *.d)
|
DEPS := $(wildcard *.d)
|
||||||
ifneq ($(DEPS),)
|
ifneq ($(DEPS),)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ CFLAGS=-O
|
|||||||
LDFLAGS=-L. -lz
|
LDFLAGS=-L. -lz
|
||||||
LDSHARED=$(CC)
|
LDSHARED=$(CC)
|
||||||
|
|
||||||
VER=1.0.1
|
VER=1.0.4
|
||||||
LIBS=libz.a
|
LIBS=libz.a
|
||||||
|
|
||||||
AR=ar rc
|
AR=ar rc
|
||||||
@@ -37,7 +37,8 @@ OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \
|
|||||||
|
|
||||||
TEST_OBJS = example.o minigzip.o
|
TEST_OBJS = example.o minigzip.o
|
||||||
|
|
||||||
DISTFILES = README INDEX ChangeLog configure Make*[a-z0-9] descrip.mms *.[ch]
|
DISTFILES = README INDEX ChangeLog configure Make*[a-z0-9] descrip.mms \
|
||||||
|
zlib.def zlib.rc algorithm.doc *.[ch]
|
||||||
|
|
||||||
all: example minigzip
|
all: example minigzip
|
||||||
|
|
||||||
@@ -85,8 +86,8 @@ clean:
|
|||||||
|
|
||||||
zip:
|
zip:
|
||||||
mv Makefile Makefile~; cp -p Makefile.in Makefile
|
mv Makefile Makefile~; cp -p Makefile.in Makefile
|
||||||
v=`sed -n -e 's/\./-/g' -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\
|
v=`sed -n -e 's/\.//g' -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\
|
||||||
zip -ul9 zlib-$$v $(DISTFILES)
|
zip -ul9 zlib$$v $(DISTFILES)
|
||||||
mv Makefile~ Makefile
|
mv Makefile~ Makefile
|
||||||
|
|
||||||
dist:
|
dist:
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \
|
|||||||
OBJP2 = zutil$(O)+inflate$(O)+infblock$(O)+inftrees$(O)+infcodes$(O)+\
|
OBJP2 = zutil$(O)+inflate$(O)+infblock$(O)+inftrees$(O)+infcodes$(O)+\
|
||||||
infutil$(O)+inffast$(O)
|
infutil$(O)+inffast$(O)
|
||||||
|
|
||||||
|
all: zlib.lib example.exe minigzip.exe
|
||||||
|
|
||||||
adler32.obj: adler32.c zutil.h zlib.h zconf.h
|
adler32.obj: adler32.c zutil.h zlib.h zconf.h
|
||||||
$(CC) -c $(CFLAGS) $*.c
|
$(CC) -c $(CFLAGS) $*.c
|
||||||
|
|
||||||
@@ -80,7 +82,7 @@ minigzip.obj: minigzip.c zlib.h zconf.h
|
|||||||
|
|
||||||
# we must cut the command line to fit in the MS/DOS 128 byte limit:
|
# we must cut the command line to fit in the MS/DOS 128 byte limit:
|
||||||
zlib.lib: $(OBJ1) $(OBJ2)
|
zlib.lib: $(OBJ1) $(OBJ2)
|
||||||
del zlib.lib
|
if exist zlib.lib del zlib.lib
|
||||||
lib zlib $(OBJ1);
|
lib zlib $(OBJ1);
|
||||||
lib zlib $(OBJ2);
|
lib zlib $(OBJ2);
|
||||||
|
|
||||||
|
|||||||
46
Makefile.riscos
Normal file
46
Makefile.riscos
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Project: zlib_1_03
|
||||||
|
|
||||||
|
|
||||||
|
# Toolflags:
|
||||||
|
CCflags = -c -depend !Depend -IC: -g -throwback -DRISCOS -fnah
|
||||||
|
C++flags = -c -depend !Depend -IC: -throwback
|
||||||
|
Linkflags = -aif -c++ -o $@
|
||||||
|
ObjAsmflags = -throwback -NoCache -depend !Depend
|
||||||
|
CMHGflags =
|
||||||
|
LibFileflags = -c -l -o $@
|
||||||
|
Squeezeflags = -o $@
|
||||||
|
|
||||||
|
|
||||||
|
# Final targets:
|
||||||
|
@.zlib_lib: @.o.adler32 @.o.compress @.o.crc32 @.o.deflate @.o.gzio \
|
||||||
|
@.o.infblock @.o.infcodes @.o.inffast @.o.inflate @.o.inftrees @.o.infutil @.o.trees \
|
||||||
|
@.o.uncompress @.o.zutil
|
||||||
|
LibFile $(LibFileflags) @.o.adler32 @.o.compress @.o.crc32 @.o.deflate \
|
||||||
|
@.o.gzio @.o.infblock @.o.infcodes @.o.inffast @.o.inflate @.o.inftrees @.o.infutil \
|
||||||
|
@.o.trees @.o.uncompress @.o.zutil
|
||||||
|
@.test: @.tests.minigzip @.tests.example
|
||||||
|
echo Please run "Test" in directory tests
|
||||||
|
@.tests.minigzip: @.o.minigzip @.zlib_lib C:o.Stubs
|
||||||
|
Link $(Linkflags) @.o.minigzip @.zlib_lib C:o.Stubs
|
||||||
|
@.tests.example: @.o.example @.zlib_lib C:o.Stubs
|
||||||
|
Link $(Linkflags) @.o.example @.zlib_lib C:o.Stubs
|
||||||
|
|
||||||
|
|
||||||
|
# User-editable dependencies:
|
||||||
|
.c.o:
|
||||||
|
cc $(ccflags) -o $@ $<
|
||||||
|
|
||||||
|
# Static dependencies:
|
||||||
|
@.o.example: @.tests.c.example
|
||||||
|
cc $(ccflags) -o @.o.example @.tests.c.example
|
||||||
|
@.o.minigzip: @.tests.c.minigzip
|
||||||
|
cc $(ccflags) -o @.o.minigzip @.tests.c.minigzip
|
||||||
|
|
||||||
|
|
||||||
|
# Dynamic dependencies:
|
||||||
|
o.minigzip: tests.c.minigzip
|
||||||
|
o.minigzip: h.zlib
|
||||||
|
o.minigzip: h.zconf
|
||||||
|
o.example: tests.c.example
|
||||||
|
o.example: h.zlib
|
||||||
|
o.example: h.zconf
|
||||||
46
README
46
README
@@ -1,8 +1,9 @@
|
|||||||
zlib 1.0.1 is a general purpose data compression library. All the code
|
zlib 1.0.4 is a general purpose data compression library. All the code
|
||||||
is reentrant (thread safe). The data format used by the zlib library
|
is reentrant (thread safe). The data format used by the zlib library
|
||||||
is described in the files zlib-3.3.doc, deflate-1.3.doc and
|
is described by RFCs (Request for Comments) 1950 to 1952 in the files
|
||||||
gzip-4.3.doc, available in various formats from
|
ftp://ds.internic.net/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate
|
||||||
ftp://swrinde.nde.swri.edu/pub/png/documents/zlib/
|
format) and rfc1952.txt (gzip format). These documents are also available in
|
||||||
|
other formats from ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html
|
||||||
|
|
||||||
All functions of the compression library are documented in the file
|
All functions of the compression library are documented in the file
|
||||||
zlib.h. A usage example of the library is given in the file example.c
|
zlib.h. A usage example of the library is given in the file example.c
|
||||||
@@ -17,19 +18,22 @@ makefiles such as Makefile.msc; for VMS, use Make_vms.com or descrip.mms.
|
|||||||
|
|
||||||
Questions about zlib should be sent to <zlib@quest.jpl.nasa.gov> or,
|
Questions about zlib should be sent to <zlib@quest.jpl.nasa.gov> or,
|
||||||
if this fails, to the addresses given below in the Copyright section.
|
if this fails, to the addresses given below in the Copyright section.
|
||||||
|
The zlib home page is http://quest.jpl.nasa.gov/zlib/
|
||||||
|
|
||||||
The changes made in version 1.0.1 are documented in the file ChangeLog.
|
The changes made in version 1.0.4 are documented in the file ChangeLog.
|
||||||
Version number 1.0 was skipped to avoid confusion with version 0.99
|
The main changes since 1.0.3 are:
|
||||||
which had some references to 1.0 already. The main changes since 0.99 are:
|
|
||||||
|
- In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF
|
||||||
|
bit, so the decompressor could decompress all the correct data but went
|
||||||
|
on to attempt decompressing extra garbage data. This affected minigzip too.
|
||||||
|
- zlibVersion and gzerror return const char* (needed for DLL)
|
||||||
|
- port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno)
|
||||||
|
|
||||||
|
|
||||||
|
A Perl interface to zlib written by Paul Marquess <pmarquess@bfsec.bt.co.uk>
|
||||||
|
is in the CPAN (Comprehensive Perl Archive Network) sites, such as:
|
||||||
|
ftp://ftp.cis.ufl.edu/pub/perl/CPAN/modules/by-module/Compress/Compress-Zlib*
|
||||||
|
|
||||||
- fix array overlay in deflate.c which sometimes caused bad compressed data
|
|
||||||
- fix inflate bug with empty stored block
|
|
||||||
- fix MSDOS medium model which was broken in 0.99
|
|
||||||
- fix deflateParams() which could generated bad compressed data.
|
|
||||||
- added an INDEX file
|
|
||||||
- new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32),
|
|
||||||
Watcom (Makefile.wat), Amiga SAS/C (Makefile.sas)
|
|
||||||
- several portability improvements
|
|
||||||
|
|
||||||
Notes for some targets:
|
Notes for some targets:
|
||||||
|
|
||||||
@@ -38,7 +42,7 @@ Notes for some targets:
|
|||||||
|
|
||||||
- For 64-bit Iris, deflate.c must be compiled without any optimization.
|
- For 64-bit Iris, deflate.c must be compiled without any optimization.
|
||||||
With -O, one libpng test fails. The test works in 32 bit mode (with
|
With -O, one libpng test fails. The test works in 32 bit mode (with
|
||||||
the -32 compiler flag).
|
the -32 compiler flag). The compiler bug has been reported to SGI.
|
||||||
|
|
||||||
- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1
|
- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1
|
||||||
it works when compiled with cc.
|
it works when compiled with cc.
|
||||||
@@ -46,9 +50,13 @@ Notes for some targets:
|
|||||||
- zlib doesn't work on HP-UX 9.05 with one cc compiler (the one not
|
- zlib doesn't work on HP-UX 9.05 with one cc compiler (the one not
|
||||||
accepting the -O option). It works with the other cc compiler.
|
accepting the -O option). It works with the other cc compiler.
|
||||||
|
|
||||||
A Perl interface to zlib written by Paul Marquess <pmarquess@bfsec.bt.co.uk>
|
- To build a Windows DLL version, include in a DLL project zlib.def, zlib.rc
|
||||||
is in the CPAN (Comprehensive Perl Archive Network) sites, such as:
|
and all .c files except example.c and minigzip.c; compile with -DZLIB_DLL
|
||||||
ftp://ftp.cis.ufl.edu/pub/perl/CPAN/modules/by-module/Compress/Compress-Zlib*
|
For help on building a zlib DLL, contact Alessandro Iacopetti
|
||||||
|
<iaco@email.alessandria.alpcom.it> http://lisa.unial.it/iaco ,
|
||||||
|
or contact Brad Clarke <bclarke@cyberus.ca>.
|
||||||
|
|
||||||
|
- gzdopen is not supported on RISCOS
|
||||||
|
|
||||||
|
|
||||||
Acknowledgments:
|
Acknowledgments:
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: adler32.c,v 1.9 1996/01/30 21:59:09 me Exp $ */
|
/* $Id: adler32.c,v 1.10 1996/05/22 11:52:18 me Exp $ */
|
||||||
|
|
||||||
#include "zlib.h"
|
#include "zlib.h"
|
||||||
|
|
||||||
|
|||||||
105
algorithm.doc
Normal file
105
algorithm.doc
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
1. Compression algorithm (deflate)
|
||||||
|
|
||||||
|
The deflation algorithm used by zlib (also zip and gzip) is a variation of
|
||||||
|
LZ77 (Lempel-Ziv 1977, see reference below). It finds duplicated strings in
|
||||||
|
the input data. The second occurrence of a string is replaced by a
|
||||||
|
pointer to the previous string, in the form of a pair (distance,
|
||||||
|
length). Distances are limited to 32K bytes, and lengths are limited
|
||||||
|
to 258 bytes. When a string does not occur anywhere in the previous
|
||||||
|
32K bytes, it is emitted as a sequence of literal bytes. (In this
|
||||||
|
description, `string' must be taken as an arbitrary sequence of bytes,
|
||||||
|
and is not restricted to printable characters.)
|
||||||
|
|
||||||
|
Literals or match lengths are compressed with one Huffman tree, and
|
||||||
|
match distances are compressed with another tree. The trees are stored
|
||||||
|
in a compact form at the start of each block. The blocks can have any
|
||||||
|
size (except that the compressed data for one block must fit in
|
||||||
|
available memory). A block is terminated when deflate() determines that
|
||||||
|
it would be useful to start another block with fresh trees. (This is
|
||||||
|
somewhat similar to the behavior of LZW-based _compress_.)
|
||||||
|
|
||||||
|
Duplicated strings are found using a hash table. All input strings of
|
||||||
|
length 3 are inserted in the hash table. A hash index is computed for
|
||||||
|
the next 3 bytes. If the hash chain for this index is not empty, all
|
||||||
|
strings in the chain are compared with the current input string, and
|
||||||
|
the longest match is selected.
|
||||||
|
|
||||||
|
The hash chains are searched starting with the most recent strings, to
|
||||||
|
favor small distances and thus take advantage of the Huffman encoding.
|
||||||
|
The hash chains are singly linked. There are no deletions from the
|
||||||
|
hash chains, the algorithm simply discards matches that are too old.
|
||||||
|
|
||||||
|
To avoid a worst-case situation, very long hash chains are arbitrarily
|
||||||
|
truncated at a certain length, determined by a runtime option (level
|
||||||
|
parameter of deflateInit). So deflate() does not always find the longest
|
||||||
|
possible match but generally finds a match which is long enough.
|
||||||
|
|
||||||
|
deflate() also defers the selection of matches with a lazy evaluation
|
||||||
|
mechanism. After a match of length N has been found, deflate() searches for a
|
||||||
|
longer match at the next input byte. If a longer match is found, the
|
||||||
|
previous match is truncated to a length of one (thus producing a single
|
||||||
|
literal byte) and the longer match is emitted afterwards. Otherwise,
|
||||||
|
the original match is kept, and the next match search is attempted only
|
||||||
|
N steps later.
|
||||||
|
|
||||||
|
The lazy match evaluation is also subject to a runtime parameter. If
|
||||||
|
the current match is long enough, deflate() reduces the search for a longer
|
||||||
|
match, thus speeding up the whole process. If compression ratio is more
|
||||||
|
important than speed, deflate() attempts a complete second search even if
|
||||||
|
the first match is already long enough.
|
||||||
|
|
||||||
|
The lazy match evaluation is not performed for the fastest compression
|
||||||
|
modes (level parameter 1 to 3). For these fast modes, new strings
|
||||||
|
are inserted in the hash table only when no match was found, or
|
||||||
|
when the match is not too long. This degrades the compression ratio
|
||||||
|
but saves time since there are both fewer insertions and fewer searches.
|
||||||
|
|
||||||
|
|
||||||
|
2. Decompression algorithm (inflate)
|
||||||
|
|
||||||
|
The real question is, given a Huffman tree, how to decode fast. The most
|
||||||
|
important realization is that shorter codes are much more common than
|
||||||
|
longer codes, so pay attention to decoding the short codes fast, and let
|
||||||
|
the long codes take longer to decode.
|
||||||
|
|
||||||
|
inflate() sets up a first level table that covers some number of bits of
|
||||||
|
input less than the length of longest code. It gets that many bits from the
|
||||||
|
stream, and looks it up in the table. The table will tell if the next
|
||||||
|
code is that many bits or less and how many, and if it is, it will tell
|
||||||
|
the value, else it will point to the next level table for which inflate()
|
||||||
|
grabs more bits and tries to decode a longer code.
|
||||||
|
|
||||||
|
How many bits to make the first lookup is a tradeoff between the time it
|
||||||
|
takes to decode and the time it takes to build the table. If building the
|
||||||
|
table took no time (and if you had infinite memory), then there would only
|
||||||
|
be a first level table to cover all the way to the longest code. However,
|
||||||
|
building the table ends up taking a lot longer for more bits since short
|
||||||
|
codes are replicated many times in such a table. What inflate() does is
|
||||||
|
simply to make the number of bits in the first table a variable, and set it
|
||||||
|
for the maximum speed.
|
||||||
|
|
||||||
|
inflate() sends new trees relatively often, so it is possibly set for a
|
||||||
|
smaller first level table than an application that has only one tree for
|
||||||
|
all the data. For inflate, which has 286 possible codes for the
|
||||||
|
literal/length tree, the size of the first table is nine bits. Also the
|
||||||
|
distance trees have 30 possible values, and the size of the first table is
|
||||||
|
six bits. Note that for each of those cases, the table ended up one bit
|
||||||
|
longer than the ``average'' code length, i.e. the code length of an
|
||||||
|
approximately flat code which would be a little more than eight bits for
|
||||||
|
286 symbols and a little less than five bits for 30 symbols. It would be
|
||||||
|
interesting to see if optimizing the first level table for other
|
||||||
|
applications gave values within a bit or two of the flat code size.
|
||||||
|
|
||||||
|
|
||||||
|
Jean-loup Gailly Mark Adler
|
||||||
|
gzip@prep.ai.mit.edu madler@alumni.caltech.edu
|
||||||
|
|
||||||
|
|
||||||
|
References:
|
||||||
|
|
||||||
|
[LZ77] Ziv J., Lempel A., ``A Universal Algorithm for Sequential Data
|
||||||
|
Compression,'' IEEE Transactions on Information Theory, Vol. 23, No. 3,
|
||||||
|
pp. 337-343.
|
||||||
|
|
||||||
|
``DEFLATE Compressed Data Format Specification'' available in
|
||||||
|
ftp://ds.internic.net/rfc/rfc1951.txt
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: compress.c,v 1.9 1996/01/30 21:59:09 me Exp $ */
|
/* $Id: compress.c,v 1.10 1996/05/23 16:51:12 me Exp $ */
|
||||||
|
|
||||||
#include "zlib.h"
|
#include "zlib.h"
|
||||||
|
|
||||||
@@ -30,9 +30,10 @@ int compress (dest, destLen, source, sourceLen)
|
|||||||
|
|
||||||
stream.next_in = (Bytef*)source;
|
stream.next_in = (Bytef*)source;
|
||||||
stream.avail_in = (uInt)sourceLen;
|
stream.avail_in = (uInt)sourceLen;
|
||||||
|
#ifdef MAXSEG_64K
|
||||||
/* Check for source > 64K on 16-bit machine: */
|
/* Check for source > 64K on 16-bit machine: */
|
||||||
if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
|
if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
|
||||||
|
#endif
|
||||||
stream.next_out = dest;
|
stream.next_out = dest;
|
||||||
stream.avail_out = (uInt)*destLen;
|
stream.avail_out = (uInt)*destLen;
|
||||||
if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
|
if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
|
||||||
|
|||||||
145
deflate.c
145
deflate.c
@@ -47,11 +47,11 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: deflate.c,v 1.12 1996/01/30 21:59:11 me Exp $ */
|
/* $Id: deflate.c,v 1.15 1996/07/24 13:40:58 me Exp $ */
|
||||||
|
|
||||||
#include "deflate.h"
|
#include "deflate.h"
|
||||||
|
|
||||||
char deflate_copyright[] = " deflate 1.0.1 Copyright 1995-1996 Jean-loup Gailly ";
|
char deflate_copyright[] = " deflate 1.0.4 Copyright 1995-1996 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
|
||||||
@@ -62,15 +62,25 @@ char deflate_copyright[] = " deflate 1.0.1 Copyright 1995-1996 Jean-loup Gailly
|
|||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
* Function prototypes.
|
* Function prototypes.
|
||||||
*/
|
*/
|
||||||
|
typedef enum {
|
||||||
|
need_more, /* block not completed, need more input or more output */
|
||||||
|
block_done, /* block flush performed */
|
||||||
|
finish_started, /* finish started, need only more output at next deflate */
|
||||||
|
finish_done /* finish done, accept no more input or output */
|
||||||
|
} block_state;
|
||||||
|
|
||||||
|
typedef block_state (*compress_func) OF((deflate_state *s, int flush));
|
||||||
|
/* Compression function. Returns the block state after the call. */
|
||||||
|
|
||||||
local void fill_window OF((deflate_state *s));
|
local void fill_window OF((deflate_state *s));
|
||||||
local int deflate_stored OF((deflate_state *s, int flush));
|
local block_state deflate_stored OF((deflate_state *s, int flush));
|
||||||
local int deflate_fast OF((deflate_state *s, int flush));
|
local block_state deflate_fast OF((deflate_state *s, int flush));
|
||||||
local int deflate_slow OF((deflate_state *s, int flush));
|
local block_state deflate_slow OF((deflate_state *s, int flush));
|
||||||
local void lm_init OF((deflate_state *s));
|
local void lm_init OF((deflate_state *s));
|
||||||
local uInt longest_match OF((deflate_state *s, IPos cur_match));
|
local uInt longest_match OF((deflate_state *s, IPos cur_match));
|
||||||
local void putShortMSB OF((deflate_state *s, uInt b));
|
local void putShortMSB OF((deflate_state *s, uInt b));
|
||||||
local void flush_pending OF((z_stream *strm));
|
local void flush_pending OF((z_streamp strm));
|
||||||
local int read_buf OF((z_stream *strm, charf *buf, unsigned size));
|
local int read_buf OF((z_streamp strm, charf *buf, unsigned size));
|
||||||
#ifdef ASMV
|
#ifdef ASMV
|
||||||
void match_init OF((void)); /* asm code initialization */
|
void match_init OF((void)); /* asm code initialization */
|
||||||
#endif
|
#endif
|
||||||
@@ -97,9 +107,6 @@ local void check_match OF((deflate_state *s, IPos start, IPos match,
|
|||||||
* See deflate.c for comments about the MIN_MATCH+1.
|
* See deflate.c for comments about the MIN_MATCH+1.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef int (*compress_func) OF((deflate_state *s, int flush));
|
|
||||||
/* Compressing function */
|
|
||||||
|
|
||||||
/* Values for max_lazy_match, good_match and max_chain_length, depending on
|
/* Values for max_lazy_match, good_match and max_chain_length, depending on
|
||||||
* the desired pack level (0..9). The values given below have been tuned to
|
* the desired pack level (0..9). The values given below have been tuned to
|
||||||
* exclude worst case performance for pathological files. Better values may be
|
* exclude worst case performance for pathological files. Better values may be
|
||||||
@@ -169,7 +176,7 @@ struct static_tree_desc_s {int dummy;}; /* for buggy compilers */
|
|||||||
|
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
int deflateInit_(strm, level, version, stream_size)
|
int deflateInit_(strm, level, version, stream_size)
|
||||||
z_stream *strm;
|
z_streamp strm;
|
||||||
int level;
|
int level;
|
||||||
const char *version;
|
const char *version;
|
||||||
int stream_size;
|
int stream_size;
|
||||||
@@ -182,7 +189,7 @@ int deflateInit_(strm, level, version, stream_size)
|
|||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
int deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
|
int deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
|
||||||
version, stream_size)
|
version, stream_size)
|
||||||
z_stream *strm;
|
z_streamp strm;
|
||||||
int level;
|
int level;
|
||||||
int method;
|
int method;
|
||||||
int windowBits;
|
int windowBits;
|
||||||
@@ -249,7 +256,7 @@ int deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
|
|||||||
|
|
||||||
if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
|
if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
|
||||||
s->pending_buf == Z_NULL) {
|
s->pending_buf == Z_NULL) {
|
||||||
strm->msg = ERR_MSG(Z_MEM_ERROR);
|
strm->msg = (char*)ERR_MSG(Z_MEM_ERROR);
|
||||||
deflateEnd (strm);
|
deflateEnd (strm);
|
||||||
return Z_MEM_ERROR;
|
return Z_MEM_ERROR;
|
||||||
}
|
}
|
||||||
@@ -265,7 +272,7 @@ int deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
|
|||||||
|
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
int deflateSetDictionary (strm, dictionary, dictLength)
|
int deflateSetDictionary (strm, dictionary, dictLength)
|
||||||
z_stream *strm;
|
z_streamp strm;
|
||||||
const Bytef *dictionary;
|
const Bytef *dictionary;
|
||||||
uInt dictLength;
|
uInt dictLength;
|
||||||
{
|
{
|
||||||
@@ -304,7 +311,7 @@ int deflateSetDictionary (strm, dictionary, dictLength)
|
|||||||
|
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
int deflateReset (strm)
|
int deflateReset (strm)
|
||||||
z_stream *strm;
|
z_streamp strm;
|
||||||
{
|
{
|
||||||
deflate_state *s;
|
deflate_state *s;
|
||||||
|
|
||||||
@@ -334,7 +341,7 @@ int deflateReset (strm)
|
|||||||
|
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
int deflateParams(strm, level, strategy)
|
int deflateParams(strm, level, strategy)
|
||||||
z_stream *strm;
|
z_streamp strm;
|
||||||
int level;
|
int level;
|
||||||
int strategy;
|
int strategy;
|
||||||
{
|
{
|
||||||
@@ -388,7 +395,7 @@ local void putShortMSB (s, b)
|
|||||||
* (See also read_buf()).
|
* (See also read_buf()).
|
||||||
*/
|
*/
|
||||||
local void flush_pending(strm)
|
local void flush_pending(strm)
|
||||||
z_stream *strm;
|
z_streamp strm;
|
||||||
{
|
{
|
||||||
unsigned len = strm->state->pending;
|
unsigned len = strm->state->pending;
|
||||||
|
|
||||||
@@ -408,14 +415,16 @@ local void flush_pending(strm)
|
|||||||
|
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
int deflate (strm, flush)
|
int deflate (strm, flush)
|
||||||
z_stream *strm;
|
z_streamp strm;
|
||||||
int flush;
|
int flush;
|
||||||
{
|
{
|
||||||
int old_flush; /* value of flush param for previous deflate call */
|
int old_flush; /* value of flush param for previous deflate call */
|
||||||
deflate_state *s;
|
deflate_state *s;
|
||||||
|
|
||||||
if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
|
if (strm == Z_NULL || strm->state == Z_NULL ||
|
||||||
|
flush > Z_FINISH || flush < 0) {
|
||||||
|
return Z_STREAM_ERROR;
|
||||||
|
}
|
||||||
s = strm->state;
|
s = strm->state;
|
||||||
|
|
||||||
if (strm->next_out == Z_NULL ||
|
if (strm->next_out == Z_NULL ||
|
||||||
@@ -447,14 +456,23 @@ int deflate (strm, flush)
|
|||||||
if (s->strstart != 0) {
|
if (s->strstart != 0) {
|
||||||
putShortMSB(s, (uInt)(strm->adler >> 16));
|
putShortMSB(s, (uInt)(strm->adler >> 16));
|
||||||
putShortMSB(s, (uInt)(strm->adler & 0xffff));
|
putShortMSB(s, (uInt)(strm->adler & 0xffff));
|
||||||
strm->adler = 1L;
|
|
||||||
}
|
}
|
||||||
|
strm->adler = 1L;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Flush as much pending output as possible */
|
/* Flush as much pending output as possible */
|
||||||
if (s->pending != 0) {
|
if (s->pending != 0) {
|
||||||
flush_pending(strm);
|
flush_pending(strm);
|
||||||
if (strm->avail_out == 0) return Z_OK;
|
if (strm->avail_out == 0) {
|
||||||
|
/* Since avail_out is 0, deflate will be called again with
|
||||||
|
* more output space, but possibly with both pending and
|
||||||
|
* avail_in equal to zero. There won't be anything to do,
|
||||||
|
* but this is not an error situation so make sure we
|
||||||
|
* return OK instead of BUF_ERROR at next call of deflate:
|
||||||
|
*/
|
||||||
|
s->last_flush = -1;
|
||||||
|
return Z_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/* Make sure there is something to do and avoid duplicate consecutive
|
/* Make sure there is something to do and avoid duplicate consecutive
|
||||||
* flushes. For repeated and useless calls with Z_FINISH, we keep
|
* flushes. For repeated and useless calls with Z_FINISH, we keep
|
||||||
@@ -474,22 +492,27 @@ int deflate (strm, flush)
|
|||||||
*/
|
*/
|
||||||
if (strm->avail_in != 0 || s->lookahead != 0 ||
|
if (strm->avail_in != 0 || s->lookahead != 0 ||
|
||||||
(flush != Z_NO_FLUSH && s->status != FINISH_STATE)) {
|
(flush != Z_NO_FLUSH && s->status != FINISH_STATE)) {
|
||||||
int quit;
|
block_state bstate;
|
||||||
|
|
||||||
if (flush == Z_FINISH) {
|
bstate = (*(configuration_table[s->level].func))(s, flush);
|
||||||
|
|
||||||
|
if (bstate == finish_started || bstate == finish_done) {
|
||||||
s->status = FINISH_STATE;
|
s->status = FINISH_STATE;
|
||||||
}
|
}
|
||||||
quit = (*(configuration_table[s->level].func))(s, flush);
|
if (bstate == need_more || bstate == finish_started) {
|
||||||
|
if (strm->avail_out == 0) {
|
||||||
if (quit || strm->avail_out == 0) return Z_OK;
|
s->last_flush = -1; /* avoid BUF_ERROR next call, see above */
|
||||||
/* If flush != Z_NO_FLUSH && avail_out == 0, the next call
|
}
|
||||||
* of deflate should use the same flush parameter to make sure
|
return Z_OK;
|
||||||
* that the flush is complete. So we don't have to output an
|
/* If flush != Z_NO_FLUSH && avail_out == 0, the next call
|
||||||
* empty block here, this will be done at next call. This also
|
* of deflate should use the same flush parameter to make sure
|
||||||
* ensures that for a very small output buffer, we emit at most
|
* that the flush is complete. So we don't have to output an
|
||||||
* one empty block.
|
* empty block here, this will be done at next call. This also
|
||||||
*/
|
* ensures that for a very small output buffer, we emit at most
|
||||||
if (flush != Z_NO_FLUSH && flush != Z_FINISH) {
|
* one empty block.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
if (bstate == block_done) {
|
||||||
if (flush == Z_PARTIAL_FLUSH) {
|
if (flush == Z_PARTIAL_FLUSH) {
|
||||||
_tr_align(s);
|
_tr_align(s);
|
||||||
} else { /* FULL_FLUSH or SYNC_FLUSH */
|
} else { /* FULL_FLUSH or SYNC_FLUSH */
|
||||||
@@ -502,7 +525,10 @@ int deflate (strm, flush)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
flush_pending(strm);
|
flush_pending(strm);
|
||||||
if (strm->avail_out == 0) return Z_OK;
|
if (strm->avail_out == 0) {
|
||||||
|
s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */
|
||||||
|
return Z_OK;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Assert(strm->avail_out > 0, "bug2");
|
Assert(strm->avail_out > 0, "bug2");
|
||||||
@@ -523,7 +549,7 @@ int deflate (strm, flush)
|
|||||||
|
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
int deflateEnd (strm)
|
int deflateEnd (strm)
|
||||||
z_stream *strm;
|
z_streamp strm;
|
||||||
{
|
{
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
@@ -544,8 +570,8 @@ int deflateEnd (strm)
|
|||||||
|
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
int deflateCopy (dest, source)
|
int deflateCopy (dest, source)
|
||||||
z_stream *dest;
|
z_streamp dest;
|
||||||
z_stream *source;
|
z_streamp source;
|
||||||
{
|
{
|
||||||
if (source == Z_NULL || dest == Z_NULL || source->state == Z_NULL) {
|
if (source == Z_NULL || dest == Z_NULL || source->state == Z_NULL) {
|
||||||
return Z_STREAM_ERROR;
|
return Z_STREAM_ERROR;
|
||||||
@@ -570,7 +596,7 @@ int deflateCopy (dest, source)
|
|||||||
* (See also flush_pending()).
|
* (See also flush_pending()).
|
||||||
*/
|
*/
|
||||||
local int read_buf(strm, buf, size)
|
local int read_buf(strm, buf, size)
|
||||||
z_stream *strm;
|
z_streamp strm;
|
||||||
charf *buf;
|
charf *buf;
|
||||||
unsigned size;
|
unsigned size;
|
||||||
{
|
{
|
||||||
@@ -916,18 +942,18 @@ local void fill_window(s)
|
|||||||
/* Same but force premature exit if necessary. */
|
/* Same but force premature exit if necessary. */
|
||||||
#define FLUSH_BLOCK(s, eof) { \
|
#define FLUSH_BLOCK(s, eof) { \
|
||||||
FLUSH_BLOCK_ONLY(s, eof); \
|
FLUSH_BLOCK_ONLY(s, eof); \
|
||||||
if (s->strm->avail_out == 0) return 1; \
|
if (s->strm->avail_out == 0) return (eof) ? finish_started : need_more; \
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
* Copy without compression as much as possible from the input stream, return
|
* Copy without compression as much as possible from the input stream, return
|
||||||
* true if processing was terminated prematurely (no more input or output
|
* the current block state.
|
||||||
* space). This function does not insert new strings in the dictionary
|
* This function does not insert new strings in the dictionary since
|
||||||
* since uncompressible data is probably not useful. This function is used
|
* uncompressible data is probably not useful. This function is used
|
||||||
* only for the level=0 compression option.
|
* only for the level=0 compression option.
|
||||||
* NOTE: this function should be optimized to avoid extra copying.
|
* NOTE: this function should be optimized to avoid extra copying.
|
||||||
*/
|
*/
|
||||||
local int deflate_stored(s, flush)
|
local block_state deflate_stored(s, flush)
|
||||||
deflate_state *s;
|
deflate_state *s;
|
||||||
int flush;
|
int flush;
|
||||||
{
|
{
|
||||||
@@ -939,7 +965,7 @@ local int deflate_stored(s, flush)
|
|||||||
s->block_start >= (long)s->w_size, "slide too late");
|
s->block_start >= (long)s->w_size, "slide too late");
|
||||||
|
|
||||||
fill_window(s);
|
fill_window(s);
|
||||||
if (s->lookahead == 0 && flush == Z_NO_FLUSH) return 1;
|
if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more;
|
||||||
|
|
||||||
if (s->lookahead == 0) break; /* flush the current block */
|
if (s->lookahead == 0) break; /* flush the current block */
|
||||||
}
|
}
|
||||||
@@ -961,17 +987,17 @@ local int deflate_stored(s, flush)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
FLUSH_BLOCK(s, flush == Z_FINISH);
|
FLUSH_BLOCK(s, flush == Z_FINISH);
|
||||||
return 0; /* normal exit */
|
return flush == Z_FINISH ? finish_done : block_done;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
* Compress as much as possible from the input stream, return true if
|
* Compress as much as possible from the input stream, return the current
|
||||||
* processing was terminated prematurely (no more input or output space).
|
* block state.
|
||||||
* This function does not perform lazy evaluation of matches and inserts
|
* This function does not perform lazy evaluation of matches and inserts
|
||||||
* new strings in the dictionary only for unmatched strings or for short
|
* new strings in the dictionary only for unmatched strings or for short
|
||||||
* matches. It is used only for the fast compression options.
|
* matches. It is used only for the fast compression options.
|
||||||
*/
|
*/
|
||||||
local int deflate_fast(s, flush)
|
local block_state deflate_fast(s, flush)
|
||||||
deflate_state *s;
|
deflate_state *s;
|
||||||
int flush;
|
int flush;
|
||||||
{
|
{
|
||||||
@@ -986,8 +1012,9 @@ local int deflate_fast(s, flush)
|
|||||||
*/
|
*/
|
||||||
if (s->lookahead < MIN_LOOKAHEAD) {
|
if (s->lookahead < MIN_LOOKAHEAD) {
|
||||||
fill_window(s);
|
fill_window(s);
|
||||||
if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) return 1;
|
if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {
|
||||||
|
return need_more;
|
||||||
|
}
|
||||||
if (s->lookahead == 0) break; /* flush the current block */
|
if (s->lookahead == 0) break; /* flush the current block */
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1055,7 +1082,7 @@ local int deflate_fast(s, flush)
|
|||||||
if (bflush) FLUSH_BLOCK(s, 0);
|
if (bflush) FLUSH_BLOCK(s, 0);
|
||||||
}
|
}
|
||||||
FLUSH_BLOCK(s, flush == Z_FINISH);
|
FLUSH_BLOCK(s, flush == Z_FINISH);
|
||||||
return 0; /* normal exit */
|
return flush == Z_FINISH ? finish_done : block_done;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
@@ -1063,7 +1090,7 @@ local int deflate_fast(s, flush)
|
|||||||
* evaluation for matches: a match is finally adopted only if there is
|
* evaluation for matches: a match is finally adopted only if there is
|
||||||
* no better match at the next window position.
|
* no better match at the next window position.
|
||||||
*/
|
*/
|
||||||
local int deflate_slow(s, flush)
|
local block_state deflate_slow(s, flush)
|
||||||
deflate_state *s;
|
deflate_state *s;
|
||||||
int flush;
|
int flush;
|
||||||
{
|
{
|
||||||
@@ -1079,8 +1106,9 @@ local int deflate_slow(s, flush)
|
|||||||
*/
|
*/
|
||||||
if (s->lookahead < MIN_LOOKAHEAD) {
|
if (s->lookahead < MIN_LOOKAHEAD) {
|
||||||
fill_window(s);
|
fill_window(s);
|
||||||
if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) return 1;
|
if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {
|
||||||
|
return need_more;
|
||||||
|
}
|
||||||
if (s->lookahead == 0) break; /* flush the current block */
|
if (s->lookahead == 0) break; /* flush the current block */
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1158,7 +1186,7 @@ local int deflate_slow(s, flush)
|
|||||||
}
|
}
|
||||||
s->strstart++;
|
s->strstart++;
|
||||||
s->lookahead--;
|
s->lookahead--;
|
||||||
if (s->strm->avail_out == 0) return 1;
|
if (s->strm->avail_out == 0) return need_more;
|
||||||
} else {
|
} else {
|
||||||
/* There is no previous match to compare with, wait for
|
/* There is no previous match to compare with, wait for
|
||||||
* the next step to decide.
|
* the next step to decide.
|
||||||
@@ -1175,6 +1203,5 @@ local int deflate_slow(s, flush)
|
|||||||
s->match_available = 0;
|
s->match_available = 0;
|
||||||
}
|
}
|
||||||
FLUSH_BLOCK(s, flush == Z_FINISH);
|
FLUSH_BLOCK(s, flush == Z_FINISH);
|
||||||
return 0;
|
return flush == Z_FINISH ? finish_done : block_done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
subject to change. Applications should only use zlib.h.
|
subject to change. Applications should only use zlib.h.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: deflate.h,v 1.9 1996/01/30 21:59:13 me Exp $ */
|
/* $Id: deflate.h,v 1.10 1996/07/02 12:41:00 me Exp $ */
|
||||||
|
|
||||||
#ifndef _DEFLATE_H
|
#ifndef _DEFLATE_H
|
||||||
#define _DEFLATE_H
|
#define _DEFLATE_H
|
||||||
@@ -80,7 +80,7 @@ typedef unsigned IPos;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct internal_state {
|
typedef struct internal_state {
|
||||||
z_stream *strm; /* pointer back to this zlib stream */
|
z_streamp strm; /* pointer back to this zlib stream */
|
||||||
int status; /* as the name implies */
|
int status; /* as the name implies */
|
||||||
Bytef *pending_buf; /* output still pending */
|
Bytef *pending_buf; /* output still pending */
|
||||||
Bytef *pending_out; /* next pending byte to output to the stream */
|
Bytef *pending_out; /* next pending byte to output to the stream */
|
||||||
|
|||||||
13
example.c
13
example.c
@@ -3,7 +3,7 @@
|
|||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: example.c,v 1.13 1996/01/30 21:59:13 me Exp $ */
|
/* $Id: example.c,v 1.16 1996/05/23 17:11:28 me Exp $ */
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "zlib.h"
|
#include "zlib.h"
|
||||||
@@ -462,16 +462,19 @@ int main(argc, argv)
|
|||||||
uLong comprLen = 10000*sizeof(int); /* don't overflow on MSDOS */
|
uLong comprLen = 10000*sizeof(int); /* don't overflow on MSDOS */
|
||||||
uLong uncomprLen = comprLen;
|
uLong uncomprLen = comprLen;
|
||||||
|
|
||||||
if (zlib_version[0] != ZLIB_VERSION[0]) {
|
if (zlibVersion()[0] != ZLIB_VERSION[0]) {
|
||||||
fprintf(stderr, "incompatible zlib version\n");
|
fprintf(stderr, "incompatible zlib version\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
||||||
} else if (strcmp(zlib_version, ZLIB_VERSION) != 0) {
|
} else if (strcmp(zlibVersion(), ZLIB_VERSION) != 0) {
|
||||||
fprintf(stderr, "warning: different zlib version\n");
|
fprintf(stderr, "warning: different zlib version\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
compr = (Byte*)malloc((uInt)comprLen);
|
compr = (Byte*)calloc((uInt)comprLen, 1);
|
||||||
uncompr = (Byte*)calloc((uInt)uncomprLen, 1); /* must be cleared */
|
uncompr = (Byte*)calloc((uInt)uncomprLen, 1);
|
||||||
|
/* compr and uncompr are cleared to avoid reading uninitialized
|
||||||
|
* data and to ensure that uncompr compresses well.
|
||||||
|
*/
|
||||||
if (compr == Z_NULL || uncompr == Z_NULL) {
|
if (compr == Z_NULL || uncompr == Z_NULL) {
|
||||||
printf("out of memory\n");
|
printf("out of memory\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|||||||
12
gzio.c
12
gzio.c
@@ -3,7 +3,7 @@
|
|||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: gzio.c,v 1.12 1996/01/30 21:59:14 me Exp $ */
|
/* $Id: gzio.c,v 1.14 1996/07/24 13:41:01 me Exp $ */
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
@@ -496,7 +496,7 @@ int gzclose (file)
|
|||||||
errnum is set to Z_ERRNO and the application may consult errno
|
errnum is set to Z_ERRNO and the application may consult errno
|
||||||
to get the exact error code.
|
to get the exact error code.
|
||||||
*/
|
*/
|
||||||
char* gzerror (file, errnum)
|
const char* gzerror (file, errnum)
|
||||||
gzFile file;
|
gzFile file;
|
||||||
int *errnum;
|
int *errnum;
|
||||||
{
|
{
|
||||||
@@ -505,19 +505,19 @@ char* gzerror (file, errnum)
|
|||||||
|
|
||||||
if (s == NULL) {
|
if (s == NULL) {
|
||||||
*errnum = Z_STREAM_ERROR;
|
*errnum = Z_STREAM_ERROR;
|
||||||
return ERR_MSG(Z_STREAM_ERROR);
|
return (const char*)ERR_MSG(Z_STREAM_ERROR);
|
||||||
}
|
}
|
||||||
*errnum = s->z_err;
|
*errnum = s->z_err;
|
||||||
if (*errnum == Z_OK) return (char*)"";
|
if (*errnum == Z_OK) return (const char*)"";
|
||||||
|
|
||||||
m = (char*)(*errnum == Z_ERRNO ? zstrerror(errno) : s->stream.msg);
|
m = (char*)(*errnum == Z_ERRNO ? zstrerror(errno) : s->stream.msg);
|
||||||
|
|
||||||
if (m == NULL || *m == '\0') m = ERR_MSG(s->z_err);
|
if (m == NULL || *m == '\0') m = (char*)ERR_MSG(s->z_err);
|
||||||
|
|
||||||
TRYFREE(s->msg);
|
TRYFREE(s->msg);
|
||||||
s->msg = (char*)ALLOC(strlen(s->path) + strlen(m) + 3);
|
s->msg = (char*)ALLOC(strlen(s->path) + strlen(m) + 3);
|
||||||
strcpy(s->msg, s->path);
|
strcpy(s->msg, s->path);
|
||||||
strcat(s->msg, ": ");
|
strcat(s->msg, ": ");
|
||||||
strcat(s->msg, m);
|
strcat(s->msg, m);
|
||||||
return s->msg;
|
return (const char*)s->msg;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ local uInt border[] = { /* Order of the bit length code lengths */
|
|||||||
|
|
||||||
void inflate_blocks_reset(s, z, c)
|
void inflate_blocks_reset(s, z, c)
|
||||||
inflate_blocks_statef *s;
|
inflate_blocks_statef *s;
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
uLongf *c;
|
uLongf *c;
|
||||||
{
|
{
|
||||||
if (s->checkfn != Z_NULL)
|
if (s->checkfn != Z_NULL)
|
||||||
@@ -87,7 +87,7 @@ uLongf *c;
|
|||||||
|
|
||||||
|
|
||||||
inflate_blocks_statef *inflate_blocks_new(z, c, w)
|
inflate_blocks_statef *inflate_blocks_new(z, c, w)
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
check_func c;
|
check_func c;
|
||||||
uInt w;
|
uInt w;
|
||||||
{
|
{
|
||||||
@@ -115,7 +115,7 @@ uInt w;
|
|||||||
#endif
|
#endif
|
||||||
int inflate_blocks(s, z, r)
|
int inflate_blocks(s, z, r)
|
||||||
inflate_blocks_statef *s;
|
inflate_blocks_statef *s;
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
int r;
|
int r;
|
||||||
{
|
{
|
||||||
uInt t; /* temporary storage */
|
uInt t; /* temporary storage */
|
||||||
@@ -381,7 +381,7 @@ int r;
|
|||||||
|
|
||||||
int inflate_blocks_free(s, z, c)
|
int inflate_blocks_free(s, z, c)
|
||||||
inflate_blocks_statef *s;
|
inflate_blocks_statef *s;
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
uLongf *c;
|
uLongf *c;
|
||||||
{
|
{
|
||||||
inflate_blocks_reset(s, z, c);
|
inflate_blocks_reset(s, z, c);
|
||||||
|
|||||||
@@ -12,23 +12,23 @@ struct inflate_blocks_state;
|
|||||||
typedef struct inflate_blocks_state FAR inflate_blocks_statef;
|
typedef struct inflate_blocks_state FAR inflate_blocks_statef;
|
||||||
|
|
||||||
extern inflate_blocks_statef * inflate_blocks_new OF((
|
extern inflate_blocks_statef * inflate_blocks_new OF((
|
||||||
z_stream *z,
|
z_streamp z,
|
||||||
check_func c, /* check function */
|
check_func c, /* check function */
|
||||||
uInt w)); /* window size */
|
uInt w)); /* window size */
|
||||||
|
|
||||||
extern int inflate_blocks OF((
|
extern int inflate_blocks OF((
|
||||||
inflate_blocks_statef *,
|
inflate_blocks_statef *,
|
||||||
z_stream *,
|
z_streamp ,
|
||||||
int)); /* initial return code */
|
int)); /* initial return code */
|
||||||
|
|
||||||
extern void inflate_blocks_reset OF((
|
extern void inflate_blocks_reset OF((
|
||||||
inflate_blocks_statef *,
|
inflate_blocks_statef *,
|
||||||
z_stream *,
|
z_streamp ,
|
||||||
uLongf *)); /* check value on output */
|
uLongf *)); /* check value on output */
|
||||||
|
|
||||||
extern int inflate_blocks_free OF((
|
extern int inflate_blocks_free OF((
|
||||||
inflate_blocks_statef *,
|
inflate_blocks_statef *,
|
||||||
z_stream *,
|
z_streamp ,
|
||||||
uLongf *)); /* check value on output */
|
uLongf *)); /* check value on output */
|
||||||
|
|
||||||
extern void inflate_set_dictionary OF((
|
extern void inflate_set_dictionary OF((
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ inflate_codes_statef *inflate_codes_new(bl, bd, tl, td, z)
|
|||||||
uInt bl, bd;
|
uInt bl, bd;
|
||||||
inflate_huft *tl;
|
inflate_huft *tl;
|
||||||
inflate_huft *td; /* need separate declaration for Borland C++ */
|
inflate_huft *td; /* need separate declaration for Borland C++ */
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
{
|
{
|
||||||
inflate_codes_statef *c;
|
inflate_codes_statef *c;
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ z_stream *z;
|
|||||||
|
|
||||||
int inflate_codes(s, z, r)
|
int inflate_codes(s, z, r)
|
||||||
inflate_blocks_statef *s;
|
inflate_blocks_statef *s;
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
int r;
|
int r;
|
||||||
{
|
{
|
||||||
uInt j; /* temporary storage */
|
uInt j; /* temporary storage */
|
||||||
@@ -240,7 +240,7 @@ int r;
|
|||||||
|
|
||||||
void inflate_codes_free(c, z)
|
void inflate_codes_free(c, z)
|
||||||
inflate_codes_statef *c;
|
inflate_codes_statef *c;
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
{
|
{
|
||||||
ZFREE(z, c);
|
ZFREE(z, c);
|
||||||
Tracev((stderr, "inflate: codes free\n"));
|
Tracev((stderr, "inflate: codes free\n"));
|
||||||
|
|||||||
@@ -14,14 +14,14 @@ typedef struct inflate_codes_state FAR inflate_codes_statef;
|
|||||||
extern inflate_codes_statef *inflate_codes_new OF((
|
extern inflate_codes_statef *inflate_codes_new OF((
|
||||||
uInt, uInt,
|
uInt, uInt,
|
||||||
inflate_huft *, inflate_huft *,
|
inflate_huft *, inflate_huft *,
|
||||||
z_stream *));
|
z_streamp ));
|
||||||
|
|
||||||
extern int inflate_codes OF((
|
extern int inflate_codes OF((
|
||||||
inflate_blocks_statef *,
|
inflate_blocks_statef *,
|
||||||
z_stream *,
|
z_streamp ,
|
||||||
int));
|
int));
|
||||||
|
|
||||||
extern void inflate_codes_free OF((
|
extern void inflate_codes_free OF((
|
||||||
inflate_codes_statef *,
|
inflate_codes_statef *,
|
||||||
z_stream *));
|
z_streamp ));
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ uInt bl, bd;
|
|||||||
inflate_huft *tl;
|
inflate_huft *tl;
|
||||||
inflate_huft *td; /* need separate declaration for Borland C++ */
|
inflate_huft *td; /* need separate declaration for Borland C++ */
|
||||||
inflate_blocks_statef *s;
|
inflate_blocks_statef *s;
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
{
|
{
|
||||||
inflate_huft *t; /* temporary pointer */
|
inflate_huft *t; /* temporary pointer */
|
||||||
uInt e; /* extra bits or operation */
|
uInt e; /* extra bits or operation */
|
||||||
|
|||||||
@@ -14,4 +14,4 @@ extern int inflate_fast OF((
|
|||||||
inflate_huft *,
|
inflate_huft *,
|
||||||
inflate_huft *,
|
inflate_huft *,
|
||||||
inflate_blocks_statef *,
|
inflate_blocks_statef *,
|
||||||
z_stream *));
|
z_streamp ));
|
||||||
|
|||||||
15
inflate.c
15
inflate.c
@@ -49,7 +49,7 @@ struct internal_state {
|
|||||||
|
|
||||||
|
|
||||||
int inflateReset(z)
|
int inflateReset(z)
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
{
|
{
|
||||||
uLong c;
|
uLong c;
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ z_stream *z;
|
|||||||
|
|
||||||
|
|
||||||
int inflateEnd(z)
|
int inflateEnd(z)
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
{
|
{
|
||||||
uLong c;
|
uLong c;
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ z_stream *z;
|
|||||||
|
|
||||||
|
|
||||||
int inflateInit2_(z, w, version, stream_size)
|
int inflateInit2_(z, w, version, stream_size)
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
int w;
|
int w;
|
||||||
const char *version;
|
const char *version;
|
||||||
int stream_size;
|
int stream_size;
|
||||||
@@ -138,7 +138,7 @@ int stream_size;
|
|||||||
|
|
||||||
|
|
||||||
int inflateInit_(z, version, stream_size)
|
int inflateInit_(z, version, stream_size)
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
const char *version;
|
const char *version;
|
||||||
int stream_size;
|
int stream_size;
|
||||||
{
|
{
|
||||||
@@ -150,7 +150,7 @@ int stream_size;
|
|||||||
#define NEXTBYTE (z->avail_in--,z->total_in++,*z->next_in++)
|
#define NEXTBYTE (z->avail_in--,z->total_in++,*z->next_in++)
|
||||||
|
|
||||||
int inflate(z, f)
|
int inflate(z, f)
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
int f;
|
int f;
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
@@ -272,7 +272,7 @@ int f;
|
|||||||
|
|
||||||
|
|
||||||
int inflateSetDictionary(z, dictionary, dictLength)
|
int inflateSetDictionary(z, dictionary, dictLength)
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
const Bytef *dictionary;
|
const Bytef *dictionary;
|
||||||
uInt dictLength;
|
uInt dictLength;
|
||||||
{
|
{
|
||||||
@@ -280,6 +280,7 @@ uInt dictLength;
|
|||||||
|
|
||||||
if (z == Z_NULL || z->state == Z_NULL || z->state->mode != DICT0)
|
if (z == Z_NULL || z->state == Z_NULL || z->state->mode != DICT0)
|
||||||
return Z_STREAM_ERROR;
|
return Z_STREAM_ERROR;
|
||||||
|
|
||||||
if (adler32(1L, dictionary, dictLength) != z->adler) return Z_DATA_ERROR;
|
if (adler32(1L, dictionary, dictLength) != z->adler) return Z_DATA_ERROR;
|
||||||
z->adler = 1L;
|
z->adler = 1L;
|
||||||
|
|
||||||
@@ -295,7 +296,7 @@ uInt dictLength;
|
|||||||
|
|
||||||
|
|
||||||
int inflateSync(z)
|
int inflateSync(z)
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
{
|
{
|
||||||
uInt n; /* number of bytes to look at */
|
uInt n; /* number of bytes to look at */
|
||||||
Bytef *p; /* pointer to bytes */
|
Bytef *p; /* pointer to bytes */
|
||||||
|
|||||||
12
inftrees.c
12
inftrees.c
@@ -6,7 +6,7 @@
|
|||||||
#include "zutil.h"
|
#include "zutil.h"
|
||||||
#include "inftrees.h"
|
#include "inftrees.h"
|
||||||
|
|
||||||
char inflate_copyright[] = " inflate 1.0.1 Copyright 1995-1996 Mark Adler ";
|
char inflate_copyright[] = " inflate 1.0.4 Copyright 1995-1996 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
|
||||||
@@ -30,7 +30,7 @@ local int huft_build OF((
|
|||||||
uIntf *, /* list of extra bits for non-simple codes */
|
uIntf *, /* list of extra bits for non-simple codes */
|
||||||
inflate_huft * FAR*,/* result: starting table */
|
inflate_huft * FAR*,/* result: starting table */
|
||||||
uIntf *, /* maximum lookup bits (returns actual) */
|
uIntf *, /* maximum lookup bits (returns actual) */
|
||||||
z_stream *)); /* for zalloc function */
|
z_streamp )); /* for zalloc function */
|
||||||
|
|
||||||
local voidpf falloc OF((
|
local voidpf falloc OF((
|
||||||
voidpf, /* opaque pointer (not used) */
|
voidpf, /* opaque pointer (not used) */
|
||||||
@@ -103,7 +103,7 @@ uIntf *d; /* list of base values for non-simple codes */
|
|||||||
uIntf *e; /* list of extra bits for non-simple codes */
|
uIntf *e; /* list of extra bits for non-simple codes */
|
||||||
inflate_huft * FAR *t; /* result: starting table */
|
inflate_huft * FAR *t; /* result: starting table */
|
||||||
uIntf *m; /* maximum lookup bits, returns actual */
|
uIntf *m; /* maximum lookup bits, returns actual */
|
||||||
z_stream *zs; /* for zalloc function */
|
z_streamp zs; /* for zalloc function */
|
||||||
/* Given a list of code lengths and a maximum table size, make a set of
|
/* Given a list of code lengths and a maximum table size, make a set of
|
||||||
tables to decode that set of codes. Return Z_OK on success, Z_BUF_ERROR
|
tables to decode that set of codes. Return Z_OK on success, Z_BUF_ERROR
|
||||||
if the given code set is incomplete (the tables are still built in this
|
if the given code set is incomplete (the tables are still built in this
|
||||||
@@ -302,7 +302,7 @@ int inflate_trees_bits(c, bb, tb, z)
|
|||||||
uIntf *c; /* 19 code lengths */
|
uIntf *c; /* 19 code lengths */
|
||||||
uIntf *bb; /* bits tree desired/actual depth */
|
uIntf *bb; /* bits tree desired/actual depth */
|
||||||
inflate_huft * FAR *tb; /* bits tree result */
|
inflate_huft * FAR *tb; /* bits tree result */
|
||||||
z_stream *z; /* for zfree function */
|
z_streamp z; /* for zfree function */
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
@@ -327,7 +327,7 @@ uIntf *bl; /* literal desired/actual bit depth */
|
|||||||
uIntf *bd; /* distance desired/actual bit depth */
|
uIntf *bd; /* distance desired/actual bit depth */
|
||||||
inflate_huft * FAR *tl; /* literal/length tree result */
|
inflate_huft * FAR *tl; /* literal/length tree result */
|
||||||
inflate_huft * FAR *td; /* distance tree result */
|
inflate_huft * FAR *td; /* distance tree result */
|
||||||
z_stream *z; /* for zfree function */
|
z_streamp z; /* for zfree function */
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
@@ -442,7 +442,7 @@ inflate_huft * FAR *td; /* distance tree result */
|
|||||||
|
|
||||||
int inflate_trees_free(t, z)
|
int inflate_trees_free(t, z)
|
||||||
inflate_huft *t; /* table to free */
|
inflate_huft *t; /* table to free */
|
||||||
z_stream *z; /* for zfree function */
|
z_streamp z; /* for zfree function */
|
||||||
/* Free the malloc'ed tables built by huft_build(), which makes a linked
|
/* Free the malloc'ed tables built by huft_build(), which makes a linked
|
||||||
list of the tables it made, with the links in a dummy first entry of
|
list of the tables it made, with the links in a dummy first entry of
|
||||||
each table. */
|
each table. */
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ extern int inflate_trees_bits OF((
|
|||||||
uIntf *, /* 19 code lengths */
|
uIntf *, /* 19 code lengths */
|
||||||
uIntf *, /* bits tree desired/actual depth */
|
uIntf *, /* bits tree desired/actual depth */
|
||||||
inflate_huft * FAR *, /* bits tree result */
|
inflate_huft * FAR *, /* bits tree result */
|
||||||
z_stream *)); /* for zalloc, zfree functions */
|
z_streamp )); /* for zalloc, zfree functions */
|
||||||
|
|
||||||
extern int inflate_trees_dynamic OF((
|
extern int inflate_trees_dynamic OF((
|
||||||
uInt, /* number of literal/length codes */
|
uInt, /* number of literal/length codes */
|
||||||
@@ -45,7 +45,7 @@ extern int inflate_trees_dynamic OF((
|
|||||||
uIntf *, /* distance desired/actual bit depth */
|
uIntf *, /* distance desired/actual bit depth */
|
||||||
inflate_huft * FAR *, /* literal/length tree result */
|
inflate_huft * FAR *, /* literal/length tree result */
|
||||||
inflate_huft * FAR *, /* distance tree result */
|
inflate_huft * FAR *, /* distance tree result */
|
||||||
z_stream *)); /* for zalloc, zfree functions */
|
z_streamp )); /* for zalloc, zfree functions */
|
||||||
|
|
||||||
extern int inflate_trees_fixed OF((
|
extern int inflate_trees_fixed OF((
|
||||||
uIntf *, /* literal desired/actual bit depth */
|
uIntf *, /* literal desired/actual bit depth */
|
||||||
@@ -55,5 +55,5 @@ extern int inflate_trees_fixed OF((
|
|||||||
|
|
||||||
extern int inflate_trees_free OF((
|
extern int inflate_trees_free OF((
|
||||||
inflate_huft *, /* tables to free */
|
inflate_huft *, /* tables to free */
|
||||||
z_stream *)); /* for zfree function */
|
z_streamp )); /* for zfree function */
|
||||||
|
|
||||||
|
|||||||
@@ -22,11 +22,12 @@ uInt inflate_mask[17] = {
|
|||||||
/* copy as much as possible from the sliding window to the output area */
|
/* copy as much as possible from the sliding window to the output area */
|
||||||
int inflate_flush(s, z, r)
|
int inflate_flush(s, z, r)
|
||||||
inflate_blocks_statef *s;
|
inflate_blocks_statef *s;
|
||||||
z_stream *z;
|
z_streamp z;
|
||||||
int r;
|
int r;
|
||||||
{
|
{
|
||||||
uInt n;
|
uInt n;
|
||||||
Bytef *p, *q;
|
Bytef *p;
|
||||||
|
Bytef *q;
|
||||||
|
|
||||||
/* local copies of source and destination pointers */
|
/* local copies of source and destination pointers */
|
||||||
p = z->next_out;
|
p = z->next_out;
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ extern uInt inflate_mask[17];
|
|||||||
/* copy as much as possible from the sliding window to the output area */
|
/* copy as much as possible from the sliding window to the output area */
|
||||||
extern int inflate_flush OF((
|
extern int inflate_flush OF((
|
||||||
inflate_blocks_statef *,
|
inflate_blocks_statef *,
|
||||||
z_stream *,
|
z_streamp ,
|
||||||
int));
|
int));
|
||||||
|
|
||||||
struct internal_state {int dummy;}; /* for buggy compilers */
|
struct internal_state {int dummy;}; /* for buggy compilers */
|
||||||
|
|||||||
11
minigzip.c
11
minigzip.c
@@ -13,7 +13,7 @@
|
|||||||
* or in pipe mode.
|
* or in pipe mode.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: minigzip.c,v 1.8 1996/01/30 21:59:23 me Exp $ */
|
/* $Id: minigzip.c,v 1.10 1996/07/24 13:41:04 me Exp $ */
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "zlib.h"
|
#include "zlib.h"
|
||||||
@@ -37,7 +37,14 @@
|
|||||||
#ifdef VMS
|
#ifdef VMS
|
||||||
# define unlink delete
|
# define unlink delete
|
||||||
# define GZ_SUFFIX "-gz"
|
# define GZ_SUFFIX "-gz"
|
||||||
#else
|
#endif
|
||||||
|
#ifdef RISCOS
|
||||||
|
# define unlink remove
|
||||||
|
# define GZ_SUFFIX "-gz"
|
||||||
|
# define fileno(file) file->__file
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GZ_SUFFIX
|
||||||
# define GZ_SUFFIX ".gz"
|
# define GZ_SUFFIX ".gz"
|
||||||
#endif
|
#endif
|
||||||
#define SUFFIX_LEN sizeof(GZ_SUFFIX)
|
#define SUFFIX_LEN sizeof(GZ_SUFFIX)
|
||||||
|
|||||||
4
trees.c
4
trees.c
@@ -29,7 +29,7 @@
|
|||||||
* Addison-Wesley, 1983. ISBN 0-201-06672-6.
|
* Addison-Wesley, 1983. ISBN 0-201-06672-6.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: trees.c,v 1.5 1995/05/03 17:27:12 jloup Exp $ */
|
/* $Id: trees.c,v 1.11 1996/07/24 13:41:06 me Exp $ */
|
||||||
|
|
||||||
#include "deflate.h"
|
#include "deflate.h"
|
||||||
|
|
||||||
@@ -154,7 +154,7 @@ local void copy_block OF((deflate_state *s, charf *buf, unsigned len,
|
|||||||
|
|
||||||
#else /* DEBUG */
|
#else /* DEBUG */
|
||||||
# define send_code(s, c, tree) \
|
# define send_code(s, c, tree) \
|
||||||
{ if (verbose>1) fprintf(stderr,"\ncd %3d ",(c)); \
|
{ if (verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \
|
||||||
send_bits(s, tree[c].Code, tree[c].Len); }
|
send_bits(s, tree[c].Code, tree[c].Len); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
44
zconf.h
44
zconf.h
@@ -3,7 +3,7 @@
|
|||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: zconf.h,v 1.12 1995/05/03 17:27:12 jloup Exp $ */
|
/* $Id: zconf.h,v 1.20 1996/07/02 15:09:28 me Exp $ */
|
||||||
|
|
||||||
#ifndef _ZCONF_H
|
#ifndef _ZCONF_H
|
||||||
#define _ZCONF_H
|
#define _ZCONF_H
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
# define Byte z_Byte
|
# define Byte z_Byte
|
||||||
# define uInt z_uInt
|
# define uInt z_uInt
|
||||||
# define uLong z_uLong
|
# define uLong z_uLong
|
||||||
/* # define Bytef z_Bytef */
|
# define Bytef z_Bytef
|
||||||
# define charf z_charf
|
# define charf z_charf
|
||||||
# define intf z_intf
|
# define intf z_intf
|
||||||
# define uIntf z_uIntf
|
# define uIntf z_uIntf
|
||||||
@@ -49,8 +49,10 @@
|
|||||||
#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)
|
#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)
|
||||||
# define WIN32
|
# define WIN32
|
||||||
#endif
|
#endif
|
||||||
#if (defined(__GNUC__) || defined(WIN32)) && !defined(__32BIT__)
|
#if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(i386)
|
||||||
# define __32BIT__
|
# ifndef __32BIT__
|
||||||
|
# define __32BIT__
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#if defined(__MSDOS__) && !defined(MSDOS)
|
#if defined(__MSDOS__) && !defined(MSDOS)
|
||||||
# define MSDOS
|
# define MSDOS
|
||||||
@@ -80,9 +82,9 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __MWERKS__ /* Metrowerks CodeWarrior declares fileno() in unix.h */
|
/* Some Mac compilers merge all .h files incorrectly: */
|
||||||
# include <unix.h>
|
#if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__)
|
||||||
# define NO_DUMMY_DECL /* buggy compiler merges all .h files incorrectly */
|
# define NO_DUMMY_DECL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Maximum value for memLevel in deflateInit2 */
|
/* Maximum value for memLevel in deflateInit2 */
|
||||||
@@ -128,7 +130,8 @@
|
|||||||
* to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
|
* to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
|
||||||
* just define FAR to be empty.
|
* just define FAR to be empty.
|
||||||
*/
|
*/
|
||||||
#if defined(M_I86SM) || defined(M_I86MM) /* MSC small or medium model */
|
#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(__32BIT__)
|
||||||
|
/* MSC small or medium model */
|
||||||
# define SMALL_MEDIUM
|
# define SMALL_MEDIUM
|
||||||
# ifdef _MSC_VER
|
# ifdef _MSC_VER
|
||||||
# define FAR __far
|
# define FAR __far
|
||||||
@@ -137,25 +140,25 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__))
|
#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__))
|
||||||
|
# ifndef __32BIT__
|
||||||
# define SMALL_MEDIUM
|
# define SMALL_MEDIUM
|
||||||
# define FAR __far
|
# define FAR __far
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#ifndef FAR
|
#ifndef FAR
|
||||||
# define FAR
|
# define FAR
|
||||||
#endif
|
#endif
|
||||||
/* The Watcom compiler defines M_I86SM and __SMALL__ even in 32 bit mode */
|
|
||||||
#if defined(__WATCOMC__) && defined(__386__)
|
|
||||||
# undef FAR
|
|
||||||
# define FAR
|
|
||||||
# undef SMALL_MEDIUM
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef unsigned char Byte; /* 8 bits */
|
typedef unsigned char Byte; /* 8 bits */
|
||||||
typedef unsigned int uInt; /* 16 bits or more */
|
typedef unsigned int uInt; /* 16 bits or more */
|
||||||
typedef unsigned long uLong; /* 32 bits or more */
|
typedef unsigned long uLong; /* 32 bits or more */
|
||||||
|
|
||||||
/* "typedef Byte FAR Bytef;" doesn't work with Borland C/C++ */
|
#if defined(__BORLANDC__) && defined(SMALL_MEDIUM)
|
||||||
#define Bytef Byte FAR
|
/* Borland C/C++ ignores FAR inside typedef */
|
||||||
|
# define Bytef Byte FAR
|
||||||
|
#else
|
||||||
|
typedef Byte FAR Bytef;
|
||||||
|
#endif
|
||||||
typedef char FAR charf;
|
typedef char FAR charf;
|
||||||
typedef int FAR intf;
|
typedef int FAR intf;
|
||||||
typedef uInt FAR uIntf;
|
typedef uInt FAR uIntf;
|
||||||
@@ -169,4 +172,13 @@ typedef uLong FAR uLongf;
|
|||||||
typedef Byte *voidp;
|
typedef Byte *voidp;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Compile with -DZLIB_DLL for Windows DLL support */
|
||||||
|
#if (defined(_WINDOWS) || defined(WINDOWS)) && defined(ZLIB_DLL)
|
||||||
|
# include <windows.h>
|
||||||
|
# define EXPORT WINAPI
|
||||||
|
#else
|
||||||
|
# define EXPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* _ZCONF_H */
|
#endif /* _ZCONF_H */
|
||||||
|
|||||||
46
zlib.def
Normal file
46
zlib.def
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
LIBRARY "zlib"
|
||||||
|
|
||||||
|
DESCRIPTION '"""zlib data compression library"""'
|
||||||
|
|
||||||
|
EXETYPE NT
|
||||||
|
|
||||||
|
SUBSYSTEM WINDOWS
|
||||||
|
|
||||||
|
STUB 'WINSTUB.EXE'
|
||||||
|
|
||||||
|
VERSION 1.04
|
||||||
|
|
||||||
|
CODE EXECUTE READ
|
||||||
|
|
||||||
|
DATA READ WRITE
|
||||||
|
|
||||||
|
HEAPSIZE 1048576,4096
|
||||||
|
|
||||||
|
EXPORTS
|
||||||
|
zlibVersion
|
||||||
|
deflate
|
||||||
|
deflateEnd
|
||||||
|
inflate
|
||||||
|
inflateEnd
|
||||||
|
deflateSetDictionary
|
||||||
|
deflateCopy
|
||||||
|
deflateReset
|
||||||
|
deflateParams
|
||||||
|
inflateSetDictionary
|
||||||
|
inflateSync
|
||||||
|
inflateReset
|
||||||
|
compress
|
||||||
|
uncompress
|
||||||
|
gzopen
|
||||||
|
gzdopen
|
||||||
|
gzread
|
||||||
|
gzwrite
|
||||||
|
gzflush
|
||||||
|
gzclose
|
||||||
|
gzerror
|
||||||
|
adler32
|
||||||
|
crc32
|
||||||
|
deflateInit_
|
||||||
|
inflateInit_
|
||||||
|
deflateInit2_
|
||||||
|
inflateInit2_
|
||||||
127
zlib.h
127
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.0.1, May 20th, 1996.
|
version 1.0.4, Jul 24th, 1996.
|
||||||
|
|
||||||
Copyright (C) 1995-1996 Jean-loup Gailly and Mark Adler
|
Copyright (C) 1995-1996 Jean-loup Gailly and Mark Adler
|
||||||
|
|
||||||
@@ -21,7 +21,12 @@
|
|||||||
|
|
||||||
Jean-loup Gailly Mark Adler
|
Jean-loup Gailly Mark Adler
|
||||||
gzip@prep.ai.mit.edu madler@alumni.caltech.edu
|
gzip@prep.ai.mit.edu madler@alumni.caltech.edu
|
||||||
*/
|
|
||||||
|
|
||||||
|
The data format used by the zlib library is described by RFCs (Request for
|
||||||
|
Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
|
||||||
|
(zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef _ZLIB_H
|
#ifndef _ZLIB_H
|
||||||
#define _ZLIB_H
|
#define _ZLIB_H
|
||||||
@@ -32,7 +37,7 @@ extern "C" {
|
|||||||
|
|
||||||
#include "zconf.h"
|
#include "zconf.h"
|
||||||
|
|
||||||
#define ZLIB_VERSION "1.0.1"
|
#define ZLIB_VERSION "1.0.4"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The 'zlib' compression library provides in-memory compression and
|
The 'zlib' compression library provides in-memory compression and
|
||||||
@@ -84,6 +89,8 @@ typedef struct z_stream_s {
|
|||||||
uLong reserved; /* reserved for future use */
|
uLong reserved; /* reserved for future use */
|
||||||
} z_stream;
|
} z_stream;
|
||||||
|
|
||||||
|
typedef z_stream FAR *z_streamp;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The application must update next_in and avail_in when avail_in has
|
The application must update next_in and avail_in when avail_in has
|
||||||
dropped to zero. It must update next_out and avail_out when avail_out
|
dropped to zero. It must update next_out and avail_out when avail_out
|
||||||
@@ -156,16 +163,20 @@ typedef struct z_stream_s {
|
|||||||
|
|
||||||
#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
|
#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
|
||||||
|
|
||||||
extern const char *zlib_version;
|
#define zlib_version zlibVersion()
|
||||||
/* The application can compare zlib_version and ZLIB_VERSION for consistency.
|
/* for compatibility with versions < 1.0.2 */
|
||||||
If the first character differs, the library code actually used is
|
|
||||||
not compatible with the zlib.h header file used by the application.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* basic functions */
|
/* basic functions */
|
||||||
|
|
||||||
|
extern const char * EXPORT zlibVersion OF((void));
|
||||||
|
/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
|
||||||
|
If the first character differs, the library code actually used is
|
||||||
|
not compatible with the zlib.h header file used by the application.
|
||||||
|
This check is automatically made by deflateInit and inflateInit.
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
extern int deflateInit OF((z_stream *strm, int level));
|
extern int EXPORT deflateInit OF((z_streamp strm, int level));
|
||||||
|
|
||||||
Initializes the internal stream state for compression. The fields
|
Initializes the internal stream state for compression. The fields
|
||||||
zalloc, zfree and opaque must be initialized before by the caller.
|
zalloc, zfree and opaque must be initialized before by the caller.
|
||||||
@@ -187,7 +198,7 @@ extern int deflateInit OF((z_stream *strm, int level));
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
extern int deflate OF((z_stream *strm, int flush));
|
extern int EXPORT deflate OF((z_streamp strm, int flush));
|
||||||
/*
|
/*
|
||||||
Performs one or both of the following actions:
|
Performs one or both of the following actions:
|
||||||
|
|
||||||
@@ -230,8 +241,8 @@ extern int deflate OF((z_stream *strm, int flush));
|
|||||||
parameter and more output space (updated avail_out), until the flush is
|
parameter and more output space (updated avail_out), until the flush is
|
||||||
complete (deflate returns with non-zero avail_out).
|
complete (deflate returns with non-zero avail_out).
|
||||||
|
|
||||||
If the parameter flush is set to Z_FINISH, all pending input is processed,
|
If the parameter flush is set to Z_FINISH, pending input is processed,
|
||||||
all pending output is flushed and deflate returns with Z_STREAM_END if there
|
pending output is flushed and deflate returns with Z_STREAM_END if there
|
||||||
was enough output space; if deflate returns with Z_OK, this function must be
|
was enough output space; if deflate returns with Z_OK, this function must be
|
||||||
called again with Z_FINISH and more output space (updated avail_out) but no
|
called again with Z_FINISH and more output space (updated avail_out) but no
|
||||||
more input data, until it returns with Z_STREAM_END or an error. After
|
more input data, until it returns with Z_STREAM_END or an error. After
|
||||||
@@ -256,7 +267,7 @@ extern int deflate OF((z_stream *strm, int flush));
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
extern int deflateEnd OF((z_stream *strm));
|
extern int EXPORT deflateEnd OF((z_streamp strm));
|
||||||
/*
|
/*
|
||||||
All dynamically allocated data structures for this stream are freed.
|
All dynamically allocated data structures for this stream are freed.
|
||||||
This function discards any unprocessed input and does not flush any
|
This function discards any unprocessed input and does not flush any
|
||||||
@@ -271,7 +282,7 @@ extern int deflateEnd OF((z_stream *strm));
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
extern int inflateInit OF((z_stream *strm));
|
extern int EXPORT inflateInit OF((z_streamp strm));
|
||||||
|
|
||||||
Initializes the internal stream state for decompression. The fields
|
Initializes the internal stream state for decompression. The fields
|
||||||
zalloc, zfree and opaque must be initialized before by the caller. If
|
zalloc, zfree and opaque must be initialized before by the caller. If
|
||||||
@@ -286,7 +297,7 @@ extern int inflateInit OF((z_stream *strm));
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
extern int inflate OF((z_stream *strm, int flush));
|
extern int EXPORT inflate OF((z_streamp strm, int flush));
|
||||||
/*
|
/*
|
||||||
Performs one or both of the following actions:
|
Performs one or both of the following actions:
|
||||||
|
|
||||||
@@ -341,7 +352,7 @@ extern int inflate OF((z_stream *strm, int flush));
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
extern int inflateEnd OF((z_stream *strm));
|
extern int EXPORT inflateEnd OF((z_streamp strm));
|
||||||
/*
|
/*
|
||||||
All dynamically allocated data structures for this stream are freed.
|
All dynamically allocated data structures for this stream are freed.
|
||||||
This function discards any unprocessed input and does not flush any
|
This function discards any unprocessed input and does not flush any
|
||||||
@@ -359,12 +370,12 @@ extern int inflateEnd OF((z_stream *strm));
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
extern int deflateInit2 OF((z_stream *strm,
|
extern int EXPORT deflateInit2 OF((z_streamp strm,
|
||||||
int level,
|
int level,
|
||||||
int method,
|
int method,
|
||||||
int windowBits,
|
int windowBits,
|
||||||
int memLevel,
|
int memLevel,
|
||||||
int strategy));
|
int strategy));
|
||||||
|
|
||||||
This is another version of deflateInit with more compression options. The
|
This is another version of deflateInit with more compression options. The
|
||||||
fields next_in, zalloc, zfree and opaque must be initialized before by
|
fields next_in, zalloc, zfree and opaque must be initialized before by
|
||||||
@@ -417,9 +428,9 @@ extern int deflateInit2 OF((z_stream *strm,
|
|||||||
deflate().
|
deflate().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern int deflateSetDictionary OF((z_stream *strm,
|
extern int EXPORT deflateSetDictionary OF((z_streamp strm,
|
||||||
const Bytef *dictionary,
|
const Bytef *dictionary,
|
||||||
uInt dictLength));
|
uInt dictLength));
|
||||||
/*
|
/*
|
||||||
Initializes the compression dictionary (history buffer) from the given
|
Initializes the compression dictionary (history buffer) from the given
|
||||||
byte sequence without producing any compressed output. This function must
|
byte sequence without producing any compressed output. This function must
|
||||||
@@ -446,8 +457,8 @@ extern int deflateSetDictionary OF((z_stream *strm,
|
|||||||
be done by deflate().
|
be done by deflate().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern int deflateCopy OF((z_stream *dest,
|
extern int EXPORT deflateCopy OF((z_streamp dest,
|
||||||
z_stream *source));
|
z_streamp source));
|
||||||
/*
|
/*
|
||||||
Sets the destination stream as a complete copy of the source stream. If
|
Sets the destination stream as a complete copy of the source stream. If
|
||||||
the source stream is using an application-supplied history buffer, a new
|
the source stream is using an application-supplied history buffer, a new
|
||||||
@@ -469,7 +480,7 @@ extern int deflateCopy OF((z_stream *dest,
|
|||||||
destination.
|
destination.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern int deflateReset OF((z_stream *strm));
|
extern int EXPORT deflateReset OF((z_streamp strm));
|
||||||
/*
|
/*
|
||||||
This function is equivalent to deflateEnd followed by deflateInit,
|
This function is equivalent to deflateEnd followed by deflateInit,
|
||||||
but does not free and reallocate all the internal compression state.
|
but does not free and reallocate all the internal compression state.
|
||||||
@@ -480,7 +491,7 @@ extern int deflateReset OF((z_stream *strm));
|
|||||||
stream state was inconsistent (such as zalloc or state being NULL).
|
stream state was inconsistent (such as zalloc or state being NULL).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern int deflateParams OF((z_stream *strm, int level, int strategy));
|
extern int EXPORT deflateParams OF((z_streamp strm, int level, int strategy));
|
||||||
/*
|
/*
|
||||||
Dynamically update the compression level and compression strategy.
|
Dynamically update the compression level and compression strategy.
|
||||||
This can be used to switch between compression and straight copy of
|
This can be used to switch between compression and straight copy of
|
||||||
@@ -499,8 +510,8 @@ extern int deflateParams OF((z_stream *strm, int level, int strategy));
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
extern int inflateInit2 OF((z_stream *strm,
|
extern int EXPORT inflateInit2 OF((z_streamp strm,
|
||||||
int windowBits));
|
int windowBits));
|
||||||
|
|
||||||
This is another version of inflateInit with more compression options. The
|
This is another version of inflateInit with more compression options. The
|
||||||
fields next_out, zalloc, zfree and opaque must be initialized before by
|
fields next_out, zalloc, zfree and opaque must be initialized before by
|
||||||
@@ -533,9 +544,9 @@ extern int inflateInit2 OF((z_stream *strm,
|
|||||||
inflate().
|
inflate().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern int inflateSetDictionary OF((z_stream *strm,
|
extern int EXPORT inflateSetDictionary OF((z_streamp strm,
|
||||||
const Bytef *dictionary,
|
const Bytef *dictionary,
|
||||||
uInt dictLength));
|
uInt dictLength));
|
||||||
/*
|
/*
|
||||||
Initializes the decompression dictionary (history buffer) from the given
|
Initializes the decompression dictionary (history buffer) from the given
|
||||||
uncompressed byte sequence. This function must be called immediately after
|
uncompressed byte sequence. This function must be called immediately after
|
||||||
@@ -552,7 +563,7 @@ extern int inflateSetDictionary OF((z_stream *strm,
|
|||||||
inflate().
|
inflate().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern int inflateSync OF((z_stream *strm));
|
extern int EXPORT inflateSync OF((z_streamp strm));
|
||||||
/*
|
/*
|
||||||
Skips invalid compressed data until the special marker (see deflate()
|
Skips invalid compressed data until the special marker (see deflate()
|
||||||
above) can be found, or until all available input is skipped. No output
|
above) can be found, or until all available input is skipped. No output
|
||||||
@@ -567,7 +578,7 @@ extern int inflateSync OF((z_stream *strm));
|
|||||||
until success or end of the input data.
|
until success or end of the input data.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern int inflateReset OF((z_stream *strm));
|
extern int EXPORT inflateReset OF((z_streamp strm));
|
||||||
/*
|
/*
|
||||||
This function is equivalent to inflateEnd followed by inflateInit,
|
This function is equivalent to inflateEnd followed by inflateInit,
|
||||||
but does not free and reallocate all the internal decompression state.
|
but does not free and reallocate all the internal decompression state.
|
||||||
@@ -588,8 +599,8 @@ extern int inflateReset OF((z_stream *strm));
|
|||||||
utility functions can easily be modified if you need special options.
|
utility functions can easily be modified if you need special options.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern int compress OF((Bytef *dest, uLongf *destLen,
|
extern int EXPORT compress OF((Bytef *dest, uLongf *destLen,
|
||||||
const Bytef *source, uLong sourceLen));
|
const Bytef *source, uLong sourceLen));
|
||||||
/*
|
/*
|
||||||
Compresses the source buffer into the destination buffer. sourceLen is
|
Compresses the source buffer into the destination buffer. sourceLen is
|
||||||
the byte length of the source buffer. Upon entry, destLen is the total
|
the byte length of the source buffer. Upon entry, destLen is the total
|
||||||
@@ -603,8 +614,8 @@ extern int compress OF((Bytef *dest, uLongf *destLen,
|
|||||||
buffer.
|
buffer.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern int uncompress OF((Bytef *dest, uLongf *destLen,
|
extern int EXPORT uncompress OF((Bytef *dest, uLongf *destLen,
|
||||||
const Bytef *source, uLong sourceLen));
|
const Bytef *source, uLong sourceLen));
|
||||||
/*
|
/*
|
||||||
Decompresses the source buffer into the destination buffer. sourceLen is
|
Decompresses the source buffer into the destination buffer. sourceLen is
|
||||||
the byte length of the source buffer. Upon entry, destLen is the total
|
the byte length of the source buffer. Upon entry, destLen is the total
|
||||||
@@ -624,7 +635,7 @@ extern int uncompress OF((Bytef *dest, uLongf *destLen,
|
|||||||
|
|
||||||
typedef voidp gzFile;
|
typedef voidp gzFile;
|
||||||
|
|
||||||
extern gzFile gzopen OF((const char *path, const char *mode));
|
extern gzFile EXPORT gzopen OF((const char *path, const char *mode));
|
||||||
/*
|
/*
|
||||||
Opens a gzip (.gz) file for reading or writing. The mode parameter
|
Opens a gzip (.gz) file for reading or writing. The mode parameter
|
||||||
is as in fopen ("rb" or "wb") but can also include a compression level
|
is as in fopen ("rb" or "wb") but can also include a compression level
|
||||||
@@ -636,7 +647,7 @@ extern gzFile gzopen OF((const char *path, const char *mode));
|
|||||||
zlib error is Z_MEM_ERROR).
|
zlib error is Z_MEM_ERROR).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern gzFile gzdopen OF((int fd, const char *mode));
|
extern gzFile EXPORT gzdopen OF((int fd, const char *mode));
|
||||||
/*
|
/*
|
||||||
gzdopen() associates a gzFile with the file descriptor fd. File
|
gzdopen() associates a gzFile with the file descriptor fd. File
|
||||||
descriptors are obtained from calls like open, dup, creat, pipe or
|
descriptors are obtained from calls like open, dup, creat, pipe or
|
||||||
@@ -649,7 +660,7 @@ extern gzFile gzdopen OF((int fd, const char *mode));
|
|||||||
the (de)compression state.
|
the (de)compression state.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern int gzread OF((gzFile file, voidp buf, unsigned len));
|
extern int EXPORT gzread OF((gzFile file, voidp buf, unsigned len));
|
||||||
/*
|
/*
|
||||||
Reads the given number of uncompressed bytes from the compressed file.
|
Reads the given number of uncompressed bytes from the compressed file.
|
||||||
If the input file was not in gzip format, gzread copies the given number
|
If the input file was not in gzip format, gzread copies the given number
|
||||||
@@ -657,14 +668,14 @@ extern int gzread OF((gzFile file, voidp buf, unsigned len));
|
|||||||
gzread returns the number of uncompressed bytes actually read (0 for
|
gzread returns the number of uncompressed bytes actually read (0 for
|
||||||
end of file, -1 for error). */
|
end of file, -1 for error). */
|
||||||
|
|
||||||
extern int gzwrite OF((gzFile file, const voidp buf, unsigned len));
|
extern int EXPORT gzwrite OF((gzFile file, const voidp buf, unsigned len));
|
||||||
/*
|
/*
|
||||||
Writes the given number of uncompressed bytes into the compressed file.
|
Writes the given number of uncompressed bytes into the compressed file.
|
||||||
gzwrite returns the number of uncompressed bytes actually written
|
gzwrite returns the number of uncompressed bytes actually written
|
||||||
(0 in case of error).
|
(0 in case of error).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern int gzflush OF((gzFile file, int flush));
|
extern int EXPORT gzflush OF((gzFile file, int flush));
|
||||||
/*
|
/*
|
||||||
Flushes all pending output into the compressed file. The parameter
|
Flushes all pending output into the compressed file. The parameter
|
||||||
flush is as in the deflate() function. The return value is the zlib
|
flush is as in the deflate() function. The return value is the zlib
|
||||||
@@ -674,14 +685,14 @@ extern int gzflush OF((gzFile file, int flush));
|
|||||||
degrade compression.
|
degrade compression.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern int gzclose OF((gzFile file));
|
extern int EXPORT gzclose OF((gzFile file));
|
||||||
/*
|
/*
|
||||||
Flushes all pending output if necessary, closes the compressed file
|
Flushes all pending output if necessary, closes the compressed file
|
||||||
and deallocates all the (de)compression state. The return value is the zlib
|
and deallocates all the (de)compression state. The return value is the zlib
|
||||||
error number (see function gzerror below).
|
error number (see function gzerror below).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern char* gzerror OF((gzFile file, int *errnum));
|
extern const char * EXPORT gzerror OF((gzFile file, int *errnum));
|
||||||
/*
|
/*
|
||||||
Returns the error message for the last error which occurred on the
|
Returns the error message for the last error which occurred on the
|
||||||
given compressed file. errnum is set to zlib error number. If an
|
given compressed file. errnum is set to zlib error number. If an
|
||||||
@@ -698,7 +709,7 @@ extern char* gzerror OF((gzFile file, int *errnum));
|
|||||||
compression library.
|
compression library.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern uLong adler32 OF((uLong adler, const Bytef *buf, uInt len));
|
extern uLong EXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Update a running Adler-32 checksum with the bytes buf[0..len-1] and
|
Update a running Adler-32 checksum with the bytes buf[0..len-1] and
|
||||||
@@ -715,7 +726,7 @@ extern uLong adler32 OF((uLong adler, const Bytef *buf, uInt len));
|
|||||||
if (adler != original_adler) error();
|
if (adler != original_adler) error();
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern uLong crc32 OF((uLong crc, const Bytef *buf, uInt len));
|
extern uLong EXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
|
||||||
/*
|
/*
|
||||||
Update a running crc with the bytes buf[0..len-1] and return the updated
|
Update a running crc with the bytes buf[0..len-1] and return the updated
|
||||||
crc. If buf is NULL, this function returns the required initial value
|
crc. If buf is NULL, this function returns the required initial value
|
||||||
@@ -737,15 +748,15 @@ extern uLong crc32 OF((uLong crc, const Bytef *buf, uInt len));
|
|||||||
/* deflateInit and inflateInit are macros to allow checking the zlib version
|
/* deflateInit and inflateInit are macros to allow checking the zlib version
|
||||||
* and the compiler's view of z_stream:
|
* and the compiler's view of z_stream:
|
||||||
*/
|
*/
|
||||||
extern int deflateInit_ OF((z_stream *strm, int level,
|
extern int EXPORT deflateInit_ OF((z_streamp strm, int level,
|
||||||
const char *version, int stream_size));
|
const char *version, int stream_size));
|
||||||
extern int inflateInit_ OF((z_stream *strm,
|
extern int EXPORT inflateInit_ OF((z_streamp strm,
|
||||||
const char *version, int stream_size));
|
const char *version, int stream_size));
|
||||||
extern int deflateInit2_ OF((z_stream *strm, int level, int method,
|
extern int EXPORT deflateInit2_ OF((z_streamp strm, int level, int method,
|
||||||
int windowBits, int memLevel, int strategy,
|
int windowBits, int memLevel, int strategy,
|
||||||
const char *version, int stream_size));
|
const char *version, int stream_size));
|
||||||
extern int inflateInit2_ OF((z_stream *strm, int windowBits,
|
extern int EXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
|
||||||
const char *version, int stream_size));
|
const char *version, int stream_size));
|
||||||
#define deflateInit(strm, level) \
|
#define deflateInit(strm, level) \
|
||||||
deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
|
deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
|
||||||
#define inflateInit(strm) \
|
#define inflateInit(strm) \
|
||||||
|
|||||||
32
zlib.rc
Normal file
32
zlib.rc
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
#define IDR_VERSION1 1
|
||||||
|
IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
|
||||||
|
FILEVERSION 1,0,4,0
|
||||||
|
PRODUCTVERSION 1,0,4,0
|
||||||
|
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
||||||
|
FILEFLAGS 0
|
||||||
|
FILEOS VOS_DOS_WINDOWS32
|
||||||
|
FILETYPE VFT_DLL
|
||||||
|
FILESUBTYPE 0 // not used
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904E4"
|
||||||
|
//language ID = U.S. English, char set = Windows, Multilingual
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
VALUE "FileDescription", "zlib data compression library\0"
|
||||||
|
VALUE "FileVersion", "1.0.4\0"
|
||||||
|
VALUE "InternalName", "zlib\0"
|
||||||
|
VALUE "OriginalFilename", "zlib.lib\0"
|
||||||
|
VALUE "ProductName", "ZLib.DLL\0"
|
||||||
|
VALUE "Comments", "DLL support by Alessandro Iacopetti\0"
|
||||||
|
VALUE "LegalCopyright", "(C) 1995-1996 Jean-loup Gailly & Mark Adler\0"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x0409, 1252
|
||||||
|
END
|
||||||
|
END
|
||||||
30
zutil.c
30
zutil.c
@@ -3,7 +3,7 @@
|
|||||||
* For conditions of distribution and use, see copyright notice in zlib.h
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: zutil.c,v 1.12 1996/01/30 21:59:29 me Exp $ */
|
/* $Id: zutil.c,v 1.17 1996/07/24 13:41:12 me Exp $ */
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
@@ -15,8 +15,6 @@ struct internal_state {int dummy;}; /* for buggy compilers */
|
|||||||
extern void exit OF((int));
|
extern void exit OF((int));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *zlib_version = ZLIB_VERSION;
|
|
||||||
|
|
||||||
const char *z_errmsg[10] = {
|
const char *z_errmsg[10] = {
|
||||||
"need dictionary", /* Z_NEED_DICT 2 */
|
"need dictionary", /* Z_NEED_DICT 2 */
|
||||||
"stream end", /* Z_STREAM_END 1 */
|
"stream end", /* Z_STREAM_END 1 */
|
||||||
@@ -30,12 +28,19 @@ const char *z_errmsg[10] = {
|
|||||||
""};
|
""};
|
||||||
|
|
||||||
|
|
||||||
|
const char *zlibVersion()
|
||||||
|
{
|
||||||
|
return ZLIB_VERSION;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
void z_error (m)
|
void z_error (m)
|
||||||
char *m;
|
char *m;
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s\n", m);
|
fprintf(stderr, "%s\n", m);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_MEMCPY
|
#ifndef HAVE_MEMCPY
|
||||||
|
|
||||||
@@ -50,6 +55,19 @@ void zmemcpy(dest, source, len)
|
|||||||
} while (--len != 0);
|
} while (--len != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int zmemcmp(s1, s2, len)
|
||||||
|
Bytef* s1;
|
||||||
|
Bytef* s2;
|
||||||
|
uInt len;
|
||||||
|
{
|
||||||
|
uInt j;
|
||||||
|
|
||||||
|
for (j = 0; j < len; j++) {
|
||||||
|
if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void zmemzero(dest, len)
|
void zmemzero(dest, len)
|
||||||
Bytef* dest;
|
Bytef* dest;
|
||||||
uInt len;
|
uInt len;
|
||||||
@@ -135,14 +153,14 @@ void zcfree (voidpf opaque, voidpf ptr)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ptr = opaque; /* just to make some compilers happy */
|
ptr = opaque; /* just to make some compilers happy */
|
||||||
z_error("zcfree: ptr not found");
|
Assert(0, "zcfree: ptr not found");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif /* __TURBOC__ */
|
#endif /* __TURBOC__ */
|
||||||
|
|
||||||
|
|
||||||
#if defined(M_I86) && !(defined(__WATCOMC__) && defined(__386__))
|
#if defined(M_I86) && !defined(__32BIT__)
|
||||||
/* Microsoft C */
|
/* Microsoft C in 16-bit mode */
|
||||||
|
|
||||||
# define MY_ZCALLOC
|
# define MY_ZCALLOC
|
||||||
|
|
||||||
|
|||||||
14
zutil.h
14
zutil.h
@@ -8,14 +8,14 @@
|
|||||||
subject to change. Applications should only use zlib.h.
|
subject to change. Applications should only use zlib.h.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: zutil.h,v 1.13 1996/01/30 21:59:29 me Exp $ */
|
/* $Id: zutil.h,v 1.16 1996/07/24 13:41:13 me Exp $ */
|
||||||
|
|
||||||
#ifndef _Z_UTIL_H
|
#ifndef _Z_UTIL_H
|
||||||
#define _Z_UTIL_H
|
#define _Z_UTIL_H
|
||||||
|
|
||||||
#include "zlib.h"
|
#include "zlib.h"
|
||||||
|
|
||||||
#if defined(MSDOS) || defined(VMS) || defined(CRAY) || defined(WIN32)
|
#if defined(MSDOS)||defined(VMS)||defined(CRAY)||defined(WIN32)||defined(RISCOS)
|
||||||
# include <stddef.h>
|
# include <stddef.h>
|
||||||
# include <errno.h>
|
# include <errno.h>
|
||||||
#else
|
#else
|
||||||
@@ -40,10 +40,10 @@ typedef unsigned long ulg;
|
|||||||
extern const char *z_errmsg[10]; /* indexed by 2-zlib_error */
|
extern const char *z_errmsg[10]; /* indexed by 2-zlib_error */
|
||||||
/* (size given to avoid silly warnings with Visual C++) */
|
/* (size given to avoid silly warnings with Visual C++) */
|
||||||
|
|
||||||
#define ERR_MSG(err) (char*)z_errmsg[Z_NEED_DICT-(err)]
|
#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
|
||||||
|
|
||||||
#define ERR_RETURN(strm,err) \
|
#define ERR_RETURN(strm,err) \
|
||||||
return (strm->msg = ERR_MSG(err), (err))
|
return (strm->msg = (char*)ERR_MSG(err), (err))
|
||||||
/* To be used only when the state is known to be valid */
|
/* To be used only when the state is known to be valid */
|
||||||
|
|
||||||
/* common constants */
|
/* common constants */
|
||||||
@@ -116,7 +116,7 @@ extern const char *z_errmsg[10]; /* indexed by 2-zlib_error */
|
|||||||
# define OS_CODE 0x0a
|
# define OS_CODE 0x0a
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _BEOS_
|
#if defined(_BEOS_) || defined(RISCOS)
|
||||||
# define fdopen(fd,mode) NULL /* No fdopen() */
|
# define fdopen(fd,mode) NULL /* No fdopen() */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -163,6 +163,7 @@ extern const char *z_errmsg[10]; /* indexed by 2-zlib_error */
|
|||||||
# endif
|
# endif
|
||||||
#else
|
#else
|
||||||
extern void zmemcpy OF((Bytef* dest, Bytef* source, uInt len));
|
extern void zmemcpy OF((Bytef* dest, Bytef* source, uInt len));
|
||||||
|
extern int zmemcmp OF((Bytef* s1, Bytef* s2, uInt len));
|
||||||
extern void zmemzero OF((Bytef* dest, uInt len));
|
extern void zmemzero OF((Bytef* dest, uInt len));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -172,6 +173,7 @@ extern const char *z_errmsg[10]; /* indexed by 2-zlib_error */
|
|||||||
# ifndef verbose
|
# ifndef verbose
|
||||||
# define verbose 0
|
# define verbose 0
|
||||||
# endif
|
# endif
|
||||||
|
extern void z_error OF((char *m));
|
||||||
# define Assert(cond,msg) {if(!(cond)) z_error(msg);}
|
# define Assert(cond,msg) {if(!(cond)) z_error(msg);}
|
||||||
# define Trace(x) fprintf x
|
# define Trace(x) fprintf x
|
||||||
# define Tracev(x) {if (verbose) fprintf x ;}
|
# define Tracev(x) {if (verbose) fprintf x ;}
|
||||||
@@ -190,8 +192,6 @@ extern const char *z_errmsg[10]; /* indexed by 2-zlib_error */
|
|||||||
|
|
||||||
typedef uLong (*check_func) OF((uLong check, const Bytef *buf, uInt len));
|
typedef uLong (*check_func) OF((uLong check, const Bytef *buf, uInt len));
|
||||||
|
|
||||||
extern void z_error OF((char *m));
|
|
||||||
|
|
||||||
voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
|
voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
|
||||||
void zcfree OF((voidpf opaque, voidpf ptr));
|
void zcfree OF((voidpf opaque, voidpf ptr));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user