-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
77 changed files
with
7,228 additions
and
2,470 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -36,6 +36,11 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html | |
Before making the call, make sure that avail_in and avail_out are not | ||
zero. When setting the parameter flush equal to Z_FINISH, also make sure | ||
that avail_out is big enough to allow processing all pending input. | ||
Note that a Z_BUF_ERROR is not fatal--another call to deflate() or | ||
inflate() can be made with more input or output space. A Z_BUF_ERROR | ||
may in fact be unavoidable depending on how the functions are used, since | ||
it is not possible to tell whether or not there is more output pending | ||
when strm.avail_out returns with zero. | ||
|
||
6. Where's the zlib documentation (man pages, etc.)? | ||
|
||
|
@@ -88,13 +93,171 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html | |
14. Why does "make test" fail on Mac OS X? | ||
|
||
Mac OS X already includes zlib as a shared library, and so -lz links the | ||
shared library instead of the one that the "make" compiled. For zlib | ||
1.1.3, the two are incompatible due to different compile-time | ||
options. Simply change the -lz in the Makefile to libz.a, and it will use | ||
the compiled library instead of the shared one and the "make test" will | ||
succeed. | ||
shared library instead of the one that the "make" compiled. The two are | ||
incompatible due to different compile-time options. Simply change the -lz | ||
in the Makefile to libz.a, and it will use the compiled library instead | ||
of the shared one and the "make test" will succeed. | ||
|
||
15. I have a question about OttoPDF | ||
|
||
We are not the authors of OttoPDF. The real author is on the OttoPDF web | ||
site Joel Hainley [email protected]. | ||
|
||
16. Why does gzip give an error on a file I make with compress/deflate? | ||
|
||
The compress and deflate functions produce data in the zlib format, which | ||
is different and incompatible with the gzip format. The gz* functions in | ||
zlib on the other hand use the gzip format. Both the zlib and gzip | ||
formats use the same compressed data format, but have different headers | ||
and trailers. | ||
|
||
17. Ok, so why are there two different formats? | ||
|
||
The gzip format was designed to retain the directory information about | ||
a single file, such as the name and last modification date. The zlib | ||
format on the other hand was designed for in-memory and communication | ||
channel applications, and has a much more compact header and trailer and | ||
uses a faster integrity check than gzip. | ||
|
||
18. Well that's nice, but how do I make a gzip file in memory? | ||
|
||
Read RFC 1952 for the gzip header and trailer format, and roll your own | ||
gzip formatted data using raw deflate and crc32(). | ||
|
||
19. Is zlib thread-safe? | ||
|
||
Yes. However any library routines that zlib uses and any application- | ||
provided memory allocation routines must also be thread-safe. Of course, | ||
you should only operate on any given zlib or gzip stream from a single | ||
thread. zlib's gz* functions use stdio library routines, and most of | ||
zlib's functions use the library memory allocation routines by default. | ||
zlib's Init functions allow for the application to provide custom memory | ||
allocation routines. | ||
|
||
20. Can I use zlib in my commercial application? | ||
|
||
Yes. Please read the license in zlib.h. | ||
|
||
21. Is zlib under the GNU license? | ||
|
||
No. Please read the license in zlib.h. | ||
|
||
22. Will zlib work on a big-endian or little-endian architecture, and can I | ||
exchange compressed data between them? | ||
|
||
Yes and yes. | ||
|
||
23. Will zlib work on a 64-bit machine? | ||
|
||
It should. It has been tested on 64-bit machines, and has no dependence | ||
on any data types being limited to 32-bits in length. If you have any | ||
difficulties, please provide a complete problem report to [email protected] | ||
|
||
24. Will zlib decompress data from the PKWare Data Compression Library? | ||
|
||
No. The PKWare DCL uses a completely different compressed data format | ||
than does PKZIP and zlib. However, you can look in zlib's contrib/blast | ||
directory for a possible solution to your problem. | ||
|
||
25. Can I access data randomly in a compressed stream? | ||
|
||
No, not without some preparation. If when compressing you periodically | ||
use Z_FULL_FLUSH, carefully write all the pending data at those points, | ||
and keep an index of those locations, then you can start decompression | ||
at those points. You have to be careful to not use Z_FULL_FLUSH too | ||
often, since it can significantly degrade compression. | ||
|
||
26. Does zlib work on MVS, OS/390, CICS, etc.? | ||
|
||
We don't know for sure. We have heard occasional reports of success on | ||
these systems. If you do use it on one of these, please provide us with | ||
a report, instructions, and patches that we can reference when we get | ||
these questions. Thanks. | ||
|
||
27. Is there some simpler, easier to read version of inflate I can look at | ||
to understand the deflate format? | ||
|
||
First off, you should read RFC 1951. Second, yes. Look in zlib's | ||
contrib/puff directory. | ||
|
||
28. Does zlib infringe on any patents? | ||
|
||
As far as we know, no. In fact, that was originally the whole point behind | ||
zlib. Look here for some more information: | ||
|
||
http://www.gzip.org/#faq11 | ||
|
||
29. Can zlib work with greater than 4 GB of data? | ||
|
||
Yes. inflate() and deflate() will process any amount of data correctly. | ||
However the strm.total_in and strm_total_out counters may be limited to | ||
4 GB. The user can easily set up their own counters updated after each | ||
call of inflate() or deflate() to count beyond 4 GB. compress() and | ||
uncompress() may be limited to 4 GB, since they operate in a single | ||
call using unsigned long lengths. gzseek() may be limited to 4 GB | ||
depending on how zlib is compiled. | ||
|
||
30. Does zlib have any security vulnerabilities? | ||
|
||
The only one that we are aware of is potentially in gzprintf(). If zlib | ||
is compiled to use sprintf() or vsprintf(), then there is no protection | ||
against a buffer overflow of a 4K string space, other than the caller of | ||
gzprintf() assuring that the output will not exceed 4K. On the other | ||
hand, if zlib is compiled to use snprintf() or vsnprintf(), then there is | ||
no vulnerability. | ||
|
||
Note that you should be using the most recent version of zlib. Versions | ||
1.1.3 and before were subject to a double-free vulnerability. | ||
|
||
31. Is there a Java version of zlib? | ||
|
||
Probably what you want is to use zlib in Java. zlib is already included | ||
as part of the Java SDK in the java.util.zip class. If you really want | ||
a version of zlib written in the Java language, look on the zlib home | ||
page for links: http://www.zlib.org/ | ||
|
||
32. I get this or that compiler or source-code scanner warning. Can't you guys | ||
write proper code? | ||
|
||
Many years ago, we gave up attempting to avoid warnings on every compiler | ||
in the universe. It just got to be a waste of time, and some compilers | ||
were downright silly. So now, we simply make sure that the code always | ||
works. | ||
|
||
33. Will zlib read the (insert any ancient or arcane format here) compressed | ||
data format? | ||
|
||
Probably not. Look in the comp.compression FAQ for pointers to various | ||
formats and associated software. | ||
|
||
34. How can I encrypt/decrypt zip files with zlib? | ||
|
||
zlib doesn't support encryption. PKZIP encryption is very weak and can be | ||
broken with freely available programs. To get strong encryption, use gpg | ||
which already includes zlib compression. | ||
|
||
35. What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings? | ||
|
||
"gzip" is the gzip format, and "deflate" is the zlib format. They should | ||
probably have called the second one "zlib" instead to avoid confusion | ||
with the raw deflate compressed data format. While the HTTP 1.1 RFC 2616 | ||
correctly points to the zlib specification in RFC 1950 for the "deflate" | ||
transfer encoding, there have been reports of servers and browsers that | ||
incorrectly produce or expect raw deflate data per the deflate | ||
specficiation in RFC 1951, most notably Microsoft. So even though the | ||
"deflate" transfer encoding using the zlib format would be the more | ||
efficient approach (and in fact exactly what the zlib format was designed | ||
for), using the "gzip" transfer encoding is probably more reliable due to | ||
an unfortunate choice of name on the part of the HTTP 1.1 authors. | ||
|
||
36. Does zlib support the new "Deflate64" format introduced by PKWare? | ||
|
||
No. PKWare has apparently decided to keep that format proprietary, since | ||
they have not documented it as they have previous compression formats. | ||
In any case, the compression improvements are so modest compared to other | ||
more modern approaches, that it's not worth the effort to implement. | ||
|
||
37. Can you please sign these lengthy legal documents and fax them back to us | ||
so that we can use your software in our product? | ||
|
||
No. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,36 +1,16 @@ | ||
ChangeLog history of changes | ||
INDEX this file | ||
FAQ Frequently Asked Questions about zlib | ||
Make_vms.com script for Vax/VMS | ||
INDEX this file | ||
Makefile makefile for Unix (generated by configure) | ||
Makefile.in makefile for Unix (template for configure) | ||
Makefile.riscos makefile for RISCOS | ||
README guess what | ||
algorithm.txt description of the (de)compression algorithm | ||
configure configure script for Unix | ||
descrip.mms makefile for Vax/VMS | ||
zlib.3 mini man page for zlib (volunteers to write full | ||
man pages from zlib.h welcome. write to [email protected]) | ||
|
||
amiga/Makefile.sas makefile for Amiga SAS/C | ||
amiga/Makefile.pup makefile for Amiga powerUP SAS/C PPC | ||
|
||
msdos/Makefile.w32 makefile for Microsoft Visual C++ 32-bit | ||
msdos/Makefile.b32 makefile for Borland C++ 32-bit | ||
msdos/Makefile.bor makefile for Borland C/C++ 16-bit | ||
msdos/Makefile.dj2 makefile for DJGPP 2.x | ||
msdos/Makefile.emx makefile for EMX 0.9c (32-bit DOS/OS2) | ||
msdos/Makefile.msc makefile for Microsoft C 16-bit | ||
msdos/Makefile.tc makefile for Turbo C | ||
msdos/Makefile.wat makefile for Watcom C | ||
msdos/zlib.def definition file for Windows DLL | ||
msdos/zlib.rc definition file for Windows DLL | ||
|
||
nt/Makefile.nt makefile for Windows NT | ||
nt/zlib.dnt definition file for Windows NT DLL | ||
nt/Makefile.emx makefile for EMX 0.9c/RSXNT 1.41 (Win32 Intel) | ||
nt/Makefile.gcc makefile for Windows NT using GCC (mingw32) | ||
zconf.in.h template for zconf.h (used by configure) | ||
|
||
aix/ instructions for building an AIX shared library | ||
old/ makefiles for various architectures and zlib documentation | ||
that has not yet been updated for zlib 1.2.x | ||
|
||
zlib public header files (must be kept): | ||
zconf.h | ||
|
@@ -40,22 +20,20 @@ zlib.h | |
adler32.c | ||
compress.c | ||
crc32.c | ||
crc32.h | ||
deflate.c | ||
deflate.h | ||
gzio.c | ||
infblock.c | ||
infblock.h | ||
infcodes.c | ||
infcodes.h | ||
infback.c | ||
inffast.c | ||
inffast.h | ||
inffixed.h | ||
inflate.c | ||
inflate.h | ||
inftrees.c | ||
inftrees.h | ||
infutil.c | ||
infutil.h | ||
maketree.c | ||
trees.c | ||
trees.h | ||
uncompr.c | ||
zutil.c | ||
zutil.h | ||
|
@@ -65,22 +43,4 @@ example.c | |
minigzip.c | ||
|
||
unsupported contribution by third parties | ||
|
||
contrib/asm386/ by Gilles Vollant <[email protected]> | ||
386 asm code replacing longest_match(). | ||
|
||
contrib/minizip/ by Gilles Vollant <[email protected]> | ||
Mini zip and unzip based on zlib | ||
See http://www.winimage.com/zLibDll/unzip.html | ||
|
||
contrib/iostream/ by Kevin Ruland <[email protected]> | ||
A C++ I/O streams interface to the zlib gz* functions | ||
|
||
contrib/iostream2/ by Tyge L�vset <[email protected]> | ||
Another C++ I/O streams interface | ||
|
||
contrib/untgz/ by "Pedro A. Aranda Guti\irrez" <[email protected]> | ||
A very simple tar.gz extractor using zlib | ||
|
||
contrib/visual-basic.txt by Carlos Rios <[email protected]> | ||
How to use compress(), uncompress() and the gz* functions from VB. | ||
See contrib/README.contrib |
Oops, something went wrong.