Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Zlib
提交
e26a448e
T
Third Party Zlib
项目概览
OpenHarmony
/
Third Party Zlib
1 年多 前同步成功
通知
16
Star
112
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Zlib
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
e26a448e
编写于
9月 09, 2011
作者:
M
Mark Adler
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
zlib 1.0.2
上级
423eb403
变更
22
隐藏空白更改
内联
并排
Showing
22 changed file
with
379 addition
and
119 deletion
+379
-119
ChangeLog
ChangeLog
+10
-0
INDEX
INDEX
+4
-0
Makefile
Makefile
+5
-4
Makefile.dj2
Makefile.dj2
+40
-21
Makefile.in
Makefile.in
+5
-4
README
README
+19
-10
adler32.c
adler32.c
+1
-1
algorithm.doc
algorithm.doc
+105
-0
compress.c
compress.c
+3
-2
deflate.c
deflate.c
+2
-2
example.c
example.c
+8
-5
gzio.c
gzio.c
+1
-1
inftrees.c
inftrees.c
+1
-1
infutil.c
infutil.c
+2
-1
minigzip.c
minigzip.c
+1
-1
trees.c
trees.c
+1
-1
zconf.h
zconf.h
+22
-6
zlib.def
zlib.def
+46
-0
zlib.h
zlib.h
+64
-55
zlib.rc
zlib.rc
+32
-0
zutil.c
zutil.c
+6
-3
zutil.h
zutil.h
+1
-1
未找到文件。
ChangeLog
浏览文件 @
e26a448e
ChangeLog file for zlib
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]
- fix array overlay in deflate.c which sometimes caused bad compressed data
- fix inflate bug with empty stored block
...
...
INDEX
浏览文件 @
e26a448e
...
...
@@ -11,8 +11,12 @@ Makefile.sas makefile for Amiga SAS/C
Makefile.tc makefile for Turbo C
Makefile.wat makefile for Watcom C
README guess what
algorithm.doc description of the compression & decompression algorithms
configure configure script for Unix
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):
zconf.h
...
...
Makefile
浏览文件 @
e26a448e
...
...
@@ -22,7 +22,7 @@ CFLAGS=-O
LDFLAGS
=
-L
.
-lz
LDSHARED
=
$(CC)
VER
=
1.0.
1
VER
=
1.0.
2
LIBS
=
libz.a
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
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
...
...
@@ -85,8 +86,8 @@ clean:
zip
:
mv
Makefile Makefile~
;
cp
-p
Makefile.in Makefile
v
=
`
sed
-n
-e
's/\./
-
/g'
-e
'/VERSION "/s/.*"\(.*\)".*/\1/p'
< zlib.h
`
;
\
zip
-ul9
zlib
-
$$
v
$(DISTFILES)
v
=
`
sed
-n
-e
's/\.//g'
-e
'/VERSION "/s/.*"\(.*\)".*/\1/p'
< zlib.h
`
;
\
zip
-ul9
zlib
$$
v
$(DISTFILES)
mv
Makefile~ Makefile
dist
:
...
...
Makefile.dj2
浏览文件 @
e26a448e
...
...
@@ -2,32 +2,51 @@
# Copyright (C) 1995-1996 Jean-loup Gailly.
# 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
#
# To install libz.a, zconf.h and zlib.h in the djgpp directories, type:
#
# 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:
\u
sr
\i
nclude
CC
=
gcc
#CFLAGS=-MMD -O
#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
#CFLAGS=-MMD -g -DDEBUG
CFLAGS
=
-MMD
-O3
-Wall
-Wwrite-strings
-Wpointer-arith
-Wconversion
\
-Wstrict-prototypes
-Wmissing-prototypes
CFLAGS
=
-MMD
-O3
$(BUTT)
-Wall
-Wwrite-strings
-Wpointer-arith
-Wconversion
\
-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
# The default value of RM is "rm -f." If "rm.exe" is not found, uncomment:
# RM=del
LDLIBS
=
-L
.
-lz
LD
=
$(CC)
-s
-o
LDSHARED
=
$(CC)
VER
=
1.0
VER
=
1.0.2
INCL
=
zlib.h zconf.h
LIBS
=
libz.a
AR
=
ar rcs
# The default value of RM is "rm -f." If "rm.exe" is not found, uncomment:
# RM=del
prefix
=
/usr/local
exec_prefix
=
$(prefix)
...
...
@@ -37,10 +56,6 @@ OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.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
test
:
all
...
...
@@ -55,23 +70,27 @@ libz.a: $(OBJS)
libz.so.$(VER)
:
$(OBJS)
$(LDSHARED)
-o
$@
$(OBJS)
rm
-f
libz.so
;
ln
-s
$@
libz.so
$(RM)
libz.so
;
ln
-s
$@
libz.so
%.exe
:
%.o $(LIBS)
$(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 .
.PHONY
:
uninstall clean
install
:
$(LIBS)
$(INSTALL)
zlib.h zconf.h
$(INCLUDE_PATH)
$(INSTALL)
$(LIBS)
$(LIBRARY_PATH)
install
:
$(INCL) $(LIBS)
-
@if not exist
$(INCLUDE_PATH)
\n
ul
mkdir
$(INCLUDE_PATH)
-
@if not exist
$(LIBRARY_PATH)
\n
ul
mkdir
$(LIBRARY_PATH)
for
%%f
in
(
$(INCL)
)
do
$(INSTALL)
%%f
$(INCLUDE_PATH)
for
%%p
in
(
$(LIBS)
)
do
$(INSTALL)
%%p
$(LIBRARY_PATH)
uninstall
:
$(RM)
$(LIBRARY_PATH)
/
$(LIBS)
$(RM)
$(INCLUDE_PATH)
/zlib.h
$(INCLUDE_PATH)
/zconf.h
for
%%f
in
(
$(INCL)
)
do
$(RM)
$(INCLUDE_PATH)
\%
%f
for
%%p
in
(
$(LIBS)
)
do
$(RM)
$(LIBRARY_PATH)
\%
%p
clean
:
$(RM)
*
.d
*
.o
*
.~
*
.exe libz.a libz.so
*
foo.gz
for
%%p
in
(
*
.d
*
.o
*
.exe libz.a libz.so
*
)
do
$(RM)
%%p
DEPS
:=
$(
wildcard
*
.d
)
ifneq
($(DEPS),)
...
...
Makefile.in
浏览文件 @
e26a448e
...
...
@@ -22,7 +22,7 @@ CFLAGS=-O
LDFLAGS
=
-L
.
-lz
LDSHARED
=
$(CC)
VER
=
1.0.
1
VER
=
1.0.
2
LIBS
=
libz.a
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
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
...
...
@@ -85,8 +86,8 @@ clean:
zip
:
mv
Makefile Makefile~
;
cp
-p
Makefile.in Makefile
v
=
`
sed
-n
-e
's/\./
-
/g'
-e
'/VERSION "/s/.*"\(.*\)".*/\1/p'
< zlib.h
`
;
\
zip
-ul9
zlib
-
$$
v
$(DISTFILES)
v
=
`
sed
-n
-e
's/\.//g'
-e
'/VERSION "/s/.*"\(.*\)".*/\1/p'
< zlib.h
`
;
\
zip
-ul9
zlib
$$
v
$(DISTFILES)
mv
Makefile~ Makefile
dist
:
...
...
README
浏览文件 @
e26a448e
zlib 1.0.
1
is a general purpose data compression library. All the code
zlib 1.0.
2
is a general purpose data compression library. All the code
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
gzip-4.3.doc, available in various formats from
ftp://swrinde.nde.swri.edu/pub/png/documents/zlib/
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). 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
zlib.h. A usage example of the library is given in the file example.c
...
...
@@ -18,9 +19,8 @@ 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,
if this fails, to the addresses given below in the Copyright section.
The changes made in version 1.0.1 are documented in the file ChangeLog.
Version number 1.0 was skipped to avoid confusion with version 0.99
which had some references to 1.0 already. The main changes since 0.99 are:
The changes made in version 1.0.2 are documented in the file ChangeLog.
The main changes since 0.99 are:
- fix array overlay in deflate.c which sometimes caused bad compressed data
- fix inflate bug with empty stored block
...
...
@@ -30,6 +30,14 @@ which had some references to 1.0 already. The main changes since 0.99 are:
- new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32),
Watcom (Makefile.wat), Amiga SAS/C (Makefile.sas)
- several portability improvements
- added algorithm.doc
- added Windows DLL support
- added a function zlibVersion (for the DLL support)
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*
Notes for some targets:
...
...
@@ -46,9 +54,10 @@ Notes for some targets:
- 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.
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*
- To build a Windows DLL version, include in a DLL project zlib.def, zlib.rc
and all .c files except example.c and minigzip.c; compile with -DZLIB_DLL
For help on building a zlib DLL, contact Alessandro Iacopetti
<iaco@cicladi.unial.it>
Acknowledgments:
...
...
adler32.c
浏览文件 @
e26a448e
...
...
@@ -3,7 +3,7 @@
* 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"
...
...
algorithm.doc
0 → 100644
浏览文件 @
e26a448e
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 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
compress.c
浏览文件 @
e26a448e
...
...
@@ -3,7 +3,7 @@
* 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"
...
...
@@ -30,9 +30,10 @@ int compress (dest, destLen, source, sourceLen)
stream
.
next_in
=
(
Bytef
*
)
source
;
stream
.
avail_in
=
(
uInt
)
sourceLen
;
#ifdef MAXSEG_64K
/* Check for source > 64K on 16-bit machine: */
if
((
uLong
)
stream
.
avail_in
!=
sourceLen
)
return
Z_BUF_ERROR
;
#endif
stream
.
next_out
=
dest
;
stream
.
avail_out
=
(
uInt
)
*
destLen
;
if
((
uLong
)
stream
.
avail_out
!=
*
destLen
)
return
Z_BUF_ERROR
;
...
...
deflate.c
浏览文件 @
e26a448e
...
...
@@ -47,11 +47,11 @@
*
*/
/* $Id: deflate.c,v 1.1
2 1996/01/30 21:59:1
1 me Exp $ */
/* $Id: deflate.c,v 1.1
3 1996/05/22 11:52:2
1 me Exp $ */
#include "deflate.h"
char
deflate_copyright
[]
=
" deflate 1.0.
1
Copyright 1995-1996 Jean-loup Gailly "
;
char
deflate_copyright
[]
=
" deflate 1.0.
2
Copyright 1995-1996 Jean-loup Gailly "
;
/*
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
...
...
example.c
浏览文件 @
e26a448e
...
...
@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* $Id: example.c,v 1.1
3 1996/01/30 21:59:13
me Exp $ */
/* $Id: example.c,v 1.1
6 1996/05/23 17:11:28
me Exp $ */
#include <stdio.h>
#include "zlib.h"
...
...
@@ -462,16 +462,19 @@ int main(argc, argv)
uLong
comprLen
=
10000
*
sizeof
(
int
);
/* don't overflow on MSDOS */
uLong
uncomprLen
=
comprLen
;
if
(
zlib
_version
[
0
]
!=
ZLIB_VERSION
[
0
])
{
if
(
zlib
Version
()
[
0
]
!=
ZLIB_VERSION
[
0
])
{
fprintf
(
stderr
,
"incompatible zlib version
\n
"
);
exit
(
1
);
}
else
if
(
strcmp
(
zlib
_version
,
ZLIB_VERSION
)
!=
0
)
{
}
else
if
(
strcmp
(
zlib
Version
()
,
ZLIB_VERSION
)
!=
0
)
{
fprintf
(
stderr
,
"warning: different zlib version
\n
"
);
}
compr
=
(
Byte
*
)
malloc
((
uInt
)
comprLen
);
uncompr
=
(
Byte
*
)
calloc
((
uInt
)
uncomprLen
,
1
);
/* must be cleared */
compr
=
(
Byte
*
)
calloc
((
uInt
)
comprLen
,
1
);
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
)
{
printf
(
"out of memory
\n
"
);
exit
(
1
);
...
...
gzio.c
浏览文件 @
e26a448e
...
...
@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* $Id: gzio.c,v 1.1
2 1996/01/30 21:59:1
4 me Exp $ */
/* $Id: gzio.c,v 1.1
3 1996/05/22 11:52:2
4 me Exp $ */
#include <stdio.h>
...
...
inftrees.c
浏览文件 @
e26a448e
...
...
@@ -6,7 +6,7 @@
#include "zutil.h"
#include "inftrees.h"
char
inflate_copyright
[]
=
" inflate 1.0.
1
Copyright 1995-1996 Mark Adler "
;
char
inflate_copyright
[]
=
" inflate 1.0.
2
Copyright 1995-1996 Mark Adler "
;
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
...
...
infutil.c
浏览文件 @
e26a448e
...
...
@@ -26,7 +26,8 @@ z_stream *z;
int
r
;
{
uInt
n
;
Bytef
*
p
,
*
q
;
Bytef
*
p
;
Bytef
*
q
;
/* local copies of source and destination pointers */
p
=
z
->
next_out
;
...
...
minigzip.c
浏览文件 @
e26a448e
...
...
@@ -13,7 +13,7 @@
* or in pipe mode.
*/
/* $Id: minigzip.c,v 1.
8 1996/01/30 21:59:23
me Exp $ */
/* $Id: minigzip.c,v 1.
9 1996/05/22 11:52:32
me Exp $ */
#include <stdio.h>
#include "zlib.h"
...
...
trees.c
浏览文件 @
e26a448e
...
...
@@ -29,7 +29,7 @@
* 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.
10 1996/05/22 11:52:34 me
Exp $ */
#include "deflate.h"
...
...
zconf.h
浏览文件 @
e26a448e
...
...
@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* $Id: zconf.h,v 1.1
2 1995/05/03 17:27:12 jloup
Exp $ */
/* $Id: zconf.h,v 1.1
8 1996/05/23 16:51:18 me
Exp $ */
#ifndef _ZCONF_H
#define _ZCONF_H
...
...
@@ -37,7 +37,7 @@
# define Byte z_Byte
# define uInt z_uInt
# define uLong z_uLong
/* # define Bytef z_Bytef */
# define Bytef z_Bytef
# define charf z_charf
# define intf z_intf
# define uIntf z_uIntf
...
...
@@ -128,7 +128,8 @@
* to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
* 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
# ifdef _MSC_VER
# define FAR __far
...
...
@@ -137,14 +138,16 @@
# endif
#endif
#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__))
# ifndef __32BIT__
# define SMALL_MEDIUM
# define FAR __far
# endif
#endif
#ifndef FAR
# define FAR
#endif
/* The Watcom compiler defines M_I86SM and __SMALL__ even in 32 bit mode */
#if defined(__WATCOMC__) && defined(__386__)
#if defined(__WATCOMC__) && defined(__386__)
&& defined(SMALL_MEDIUM)
# undef FAR
# define FAR
# undef SMALL_MEDIUM
...
...
@@ -154,8 +157,12 @@ typedef unsigned char Byte; /* 8 bits */
typedef
unsigned
int
uInt
;
/* 16 bits or more */
typedef
unsigned
long
uLong
;
/* 32 bits or more */
/* "typedef Byte FAR Bytef;" doesn't work with Borland C/C++ */
#define Bytef Byte FAR
#if defined(__BORLANDC__) && defined(SMALL_MEDIUM)
/* Borland C/C++ ignores FAR inside typedef */
# define Bytef Byte FAR
#else
typedef
Byte
FAR
Bytef
;
#endif
typedef
char
FAR
charf
;
typedef
int
FAR
intf
;
typedef
uInt
FAR
uIntf
;
...
...
@@ -169,4 +176,13 @@ typedef uLong FAR uLongf;
typedef
Byte
*
voidp
;
#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 */
zlib.def
0 → 100644
浏览文件 @
e26a448e
LIBRARY "zlib"
DESCRIPTION '"""zlib data compression library"""'
EXETYPE NT
SUBSYSTEM WINDOWS
STUB 'WINSTUB.EXE'
VERSION 1.0.2
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_
zlib.h
浏览文件 @
e26a448e
/* zlib.h -- interface of the 'zlib' general purpose compression library
version 1.0.
1, May 20th
, 1996.
version 1.0.
2, May 23rd
, 1996.
Copyright (C) 1995-1996 Jean-loup Gailly and Mark Adler
...
...
@@ -21,7 +21,12 @@
Jean-loup Gailly Mark Adler
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
#define _ZLIB_H
...
...
@@ -32,7 +37,7 @@ extern "C" {
#include "zconf.h"
#define ZLIB_VERSION "1.0.
1
"
#define ZLIB_VERSION "1.0.
2
"
/*
The 'zlib' compression library provides in-memory compression and
...
...
@@ -156,16 +161,20 @@ typedef struct z_stream_s {
#define Z_NULL 0
/* for initializing zalloc, zfree, opaque */
extern
const
char
*
zlib_version
;
/* The application can compare zlib_version and ZLIB_VERSION for consistency.
#define zlib_version zlibVersion()
/* for compatibility with versions < 1.0.2 */
/* basic functions */
extern
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.
*/
/* basic functions */
/*
extern int deflateInit OF((z_stream *strm, int level));
extern int
EXPORT
deflateInit OF((z_stream *strm, int level));
Initializes the internal stream state for compression. The fields
zalloc, zfree and opaque must be initialized before by the caller.
...
...
@@ -187,7 +196,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_stream
*
strm
,
int
flush
));
/*
Performs one or both of the following actions:
...
...
@@ -256,7 +265,7 @@ extern int deflate OF((z_stream *strm, int flush));
*/
extern
int
deflateEnd
OF
((
z_stream
*
strm
));
extern
int
EXPORT
deflateEnd
OF
((
z_stream
*
strm
));
/*
All dynamically allocated data structures for this stream are freed.
This function discards any unprocessed input and does not flush any
...
...
@@ -271,7 +280,7 @@ extern int deflateEnd OF((z_stream *strm));
/*
extern int inflateInit OF((z_stream *strm));
extern int
EXPORT
inflateInit OF((z_stream *strm));
Initializes the internal stream state for decompression. The fields
zalloc, zfree and opaque must be initialized before by the caller. If
...
...
@@ -286,7 +295,7 @@ extern int inflateInit OF((z_stream *strm));
*/
extern
int
inflate
OF
((
z_stream
*
strm
,
int
flush
));
extern
int
EXPORT
inflate
OF
((
z_stream
*
strm
,
int
flush
));
/*
Performs one or both of the following actions:
...
...
@@ -341,7 +350,7 @@ extern int inflate OF((z_stream *strm, int flush));
*/
extern
int
inflateEnd
OF
((
z_stream
*
strm
));
extern
int
EXPORT
inflateEnd
OF
((
z_stream
*
strm
));
/*
All dynamically allocated data structures for this stream are freed.
This function discards any unprocessed input and does not flush any
...
...
@@ -359,12 +368,12 @@ extern int inflateEnd OF((z_stream *strm));
*/
/*
extern int deflateInit2 OF((z_stream *strm,
int level,
int method,
int windowBits,
int memLevel,
int strategy));
extern int
EXPORT
deflateInit2 OF((z_stream *strm,
int level,
int method,
int windowBits,
int memLevel,
int strategy));
This is another version of deflateInit with more compression options. The
fields next_in, zalloc, zfree and opaque must be initialized before by
...
...
@@ -417,9 +426,9 @@ extern int deflateInit2 OF((z_stream *strm,
deflate().
*/
extern
int
deflateSetDictionary
OF
((
z_stream
*
strm
,
const
Bytef
*
dictionary
,
uInt
dictLength
));
extern
int
EXPORT
deflateSetDictionary
OF
((
z_stream
*
strm
,
const
Bytef
*
dictionary
,
uInt
dictLength
));
/*
Initializes the compression dictionary (history buffer) from the given
byte sequence without producing any compressed output. This function must
...
...
@@ -446,8 +455,8 @@ extern int deflateSetDictionary OF((z_stream *strm,
be done by deflate().
*/
extern
int
deflateCopy
OF
((
z_stream
*
dest
,
z_stream
*
source
));
extern
int
EXPORT
deflateCopy
OF
((
z_stream
*
dest
,
z_stream
*
source
));
/*
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
...
...
@@ -469,7 +478,7 @@ extern int deflateCopy OF((z_stream *dest,
destination.
*/
extern
int
deflateReset
OF
((
z_stream
*
strm
));
extern
int
EXPORT
deflateReset
OF
((
z_stream
*
strm
));
/*
This function is equivalent to deflateEnd followed by deflateInit,
but does not free and reallocate all the internal compression state.
...
...
@@ -480,7 +489,7 @@ extern int deflateReset OF((z_stream *strm));
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_stream
*
strm
,
int
level
,
int
strategy
));
/*
Dynamically update the compression level and compression strategy.
This can be used to switch between compression and straight copy of
...
...
@@ -499,8 +508,8 @@ extern int deflateParams OF((z_stream *strm, int level, int strategy));
*/
/*
extern int inflateInit2 OF((z_stream *strm,
int windowBits));
extern int
EXPORT
inflateInit2 OF((z_stream *strm,
int windowBits));
This is another version of inflateInit with more compression options. The
fields next_out, zalloc, zfree and opaque must be initialized before by
...
...
@@ -533,9 +542,9 @@ extern int inflateInit2 OF((z_stream *strm,
inflate().
*/
extern
int
inflateSetDictionary
OF
((
z_stream
*
strm
,
const
Bytef
*
dictionary
,
uInt
dictLength
));
extern
int
EXPORT
inflateSetDictionary
OF
((
z_stream
*
strm
,
const
Bytef
*
dictionary
,
uInt
dictLength
));
/*
Initializes the decompression dictionary (history buffer) from the given
uncompressed byte sequence. This function must be called immediately after
...
...
@@ -552,7 +561,7 @@ extern int inflateSetDictionary OF((z_stream *strm,
inflate().
*/
extern
int
inflateSync
OF
((
z_stream
*
strm
));
extern
int
EXPORT
inflateSync
OF
((
z_stream
*
strm
));
/*
Skips invalid compressed data until the special marker (see deflate()
above) can be found, or until all available input is skipped. No output
...
...
@@ -567,7 +576,7 @@ extern int inflateSync OF((z_stream *strm));
until success or end of the input data.
*/
extern
int
inflateReset
OF
((
z_stream
*
strm
));
extern
int
EXPORT
inflateReset
OF
((
z_stream
*
strm
));
/*
This function is equivalent to inflateEnd followed by inflateInit,
but does not free and reallocate all the internal decompression state.
...
...
@@ -588,8 +597,8 @@ extern int inflateReset OF((z_stream *strm));
utility functions can easily be modified if you need special options.
*/
extern
int
compress
OF
((
Bytef
*
dest
,
uLongf
*
destLen
,
const
Bytef
*
source
,
uLong
sourceLen
));
extern
int
EXPORT
compress
OF
((
Bytef
*
dest
,
uLongf
*
destLen
,
const
Bytef
*
source
,
uLong
sourceLen
));
/*
Compresses the source buffer into the destination buffer. sourceLen is
the byte length of the source buffer. Upon entry, destLen is the total
...
...
@@ -603,8 +612,8 @@ extern int compress OF((Bytef *dest, uLongf *destLen,
buffer.
*/
extern
int
uncompress
OF
((
Bytef
*
dest
,
uLongf
*
destLen
,
const
Bytef
*
source
,
uLong
sourceLen
));
extern
int
EXPORT
uncompress
OF
((
Bytef
*
dest
,
uLongf
*
destLen
,
const
Bytef
*
source
,
uLong
sourceLen
));
/*
Decompresses the source buffer into the destination buffer. sourceLen is
the byte length of the source buffer. Upon entry, destLen is the total
...
...
@@ -624,7 +633,7 @@ extern int uncompress OF((Bytef *dest, uLongf *destLen,
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
is as in fopen ("rb" or "wb") but can also include a compression level
...
...
@@ -636,7 +645,7 @@ extern gzFile gzopen OF((const char *path, const char *mode));
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
descriptors are obtained from calls like open, dup, creat, pipe or
...
...
@@ -649,7 +658,7 @@ extern gzFile gzdopen OF((int fd, const char *mode));
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.
If the input file was not in gzip format, gzread copies the given number
...
...
@@ -657,14 +666,14 @@ extern int gzread OF((gzFile file, voidp buf, unsigned len));
gzread returns the number of uncompressed bytes actually read (0 for
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.
gzwrite returns the number of uncompressed bytes actually written
(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
flush is as in the deflate() function. The return value is the zlib
...
...
@@ -674,14 +683,14 @@ extern int gzflush OF((gzFile file, int flush));
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
and deallocates all the (de)compression state. The return value is the zlib
error number (see function gzerror below).
*/
extern
char
*
gzerror
OF
((
gzFile
file
,
int
*
errnum
));
extern
char
EXPORT
*
gzerror
OF
((
gzFile
file
,
int
*
errnum
));
/*
Returns the error message for the last error which occurred on the
given compressed file. errnum is set to zlib error number. If an
...
...
@@ -698,7 +707,7 @@ extern char* gzerror OF((gzFile file, int *errnum));
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
...
...
@@ -715,7 +724,7 @@ extern uLong adler32 OF((uLong adler, const Bytef *buf, uInt len));
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
crc. If buf is NULL, this function returns the required initial value
...
...
@@ -737,15 +746,15 @@ extern uLong crc32 OF((uLong crc, const Bytef *buf, uInt len));
/* deflateInit and inflateInit are macros to allow checking the zlib version
* and the compiler's view of z_stream:
*/
extern
int
deflateInit_
OF
((
z_stream
*
strm
,
int
level
,
const
char
*
version
,
int
stream_size
));
extern
int
inflateInit_
OF
((
z_stream
*
strm
,
const
char
*
version
,
int
stream_size
));
extern
int
deflateInit2_
OF
((
z_stream
*
strm
,
int
level
,
int
method
,
int
windowBits
,
int
memLevel
,
int
strategy
,
const
char
*
version
,
int
stream_size
));
extern
int
inflateInit2_
OF
((
z_stream
*
strm
,
int
windowBits
,
const
char
*
version
,
int
stream_size
));
extern
int
EXPORT
deflateInit_
OF
((
z_stream
*
strm
,
int
level
,
const
char
*
version
,
int
stream_size
));
extern
int
EXPORT
inflateInit_
OF
((
z_stream
*
strm
,
const
char
*
version
,
int
stream_size
));
extern
int
EXPORT
deflateInit2_
OF
((
z_stream
*
strm
,
int
level
,
int
method
,
int
windowBits
,
int
memLevel
,
int
strategy
,
const
char
*
version
,
int
stream_size
));
extern
int
EXPORT
inflateInit2_
OF
((
z_stream
*
strm
,
int
windowBits
,
const
char
*
version
,
int
stream_size
));
#define deflateInit(strm, level) \
deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
#define inflateInit(strm) \
...
...
zlib.rc
0 → 100644
浏览文件 @
e26a448e
#include <windows.h>
#define IDR_VERSION1 1
IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
FILEVERSION 1,0,2,0
PRODUCTVERSION 1,0,2,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.2\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
zutil.c
浏览文件 @
e26a448e
...
...
@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* $Id: zutil.c,v 1.1
2 1996/01/30 21:59:29
me Exp $ */
/* $Id: zutil.c,v 1.1
5 1996/05/23 17:11:36
me Exp $ */
#include <stdio.h>
...
...
@@ -15,8 +15,6 @@ struct internal_state {int dummy;}; /* for buggy compilers */
extern
void
exit
OF
((
int
));
#endif
const
char
*
zlib_version
=
ZLIB_VERSION
;
const
char
*
z_errmsg
[
10
]
=
{
"need dictionary"
,
/* Z_NEED_DICT 2 */
"stream end"
,
/* Z_STREAM_END 1 */
...
...
@@ -30,6 +28,11 @@ const char *z_errmsg[10] = {
""
};
char
*
zlibVersion
()
{
return
ZLIB_VERSION
;
}
void
z_error
(
m
)
char
*
m
;
{
...
...
zutil.h
浏览文件 @
e26a448e
...
...
@@ -8,7 +8,7 @@
subject to change. Applications should only use zlib.h.
*/
/* $Id: zutil.h,v 1.1
3 1996/01/30 21:59:29
me Exp $ */
/* $Id: zutil.h,v 1.1
4 1996/05/22 11:52:40
me Exp $ */
#ifndef _Z_UTIL_H
#define _Z_UTIL_H
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录