annotate zlib/FAQ @ 144:8f4e72ab4e11

fix segmentation fault caused by nothing next cur_op to end
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sun, 23 Dec 2018 21:23:56 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 Frequently Asked Questions about zlib
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 If your question is not there, please check the zlib home page
111
kono
parents: 51
diff changeset
6 http://zlib.net/ which may have more recent information.
kono
parents: 51
diff changeset
7 The lastest zlib FAQ is at http://zlib.net/zlib_faq.html
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 1. Is zlib Y2K-compliant?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 Yes. zlib doesn't handle dates.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 2. Where can I get a Windows DLL version?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
111
kono
parents: 51
diff changeset
16 The zlib sources can be compiled without change to produce a DLL. See the
kono
parents: 51
diff changeset
17 file win32/DLL_FAQ.txt in the zlib distribution. Pointers to the
kono
parents: 51
diff changeset
18 precompiled DLL are found in the zlib web site at http://zlib.net/ .
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 3. Where can I get a Visual Basic interface to zlib?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 See
111
kono
parents: 51
diff changeset
23 * http://marknelson.us/1997/01/01/zlib-engine/
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 * win32/DLL_FAQ.txt in the zlib distribution
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 4. compress() returns Z_BUF_ERROR.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
111
kono
parents: 51
diff changeset
28 Make sure that before the call of compress(), the length of the compressed
kono
parents: 51
diff changeset
29 buffer is equal to the available size of the compressed buffer and not
kono
parents: 51
diff changeset
30 zero. For Visual Basic, check that this parameter is passed by reference
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 ("as any"), not by value ("as long").
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 5. deflate() or inflate() returns Z_BUF_ERROR.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
111
kono
parents: 51
diff changeset
35 Before making the call, make sure that avail_in and avail_out are not zero.
kono
parents: 51
diff changeset
36 When setting the parameter flush equal to Z_FINISH, also make sure that
kono
parents: 51
diff changeset
37 avail_out is big enough to allow processing all pending input. Note that a
kono
parents: 51
diff changeset
38 Z_BUF_ERROR is not fatal--another call to deflate() or inflate() can be
kono
parents: 51
diff changeset
39 made with more input or output space. A Z_BUF_ERROR may in fact be
kono
parents: 51
diff changeset
40 unavoidable depending on how the functions are used, since it is not
kono
parents: 51
diff changeset
41 possible to tell whether or not there is more output pending when
kono
parents: 51
diff changeset
42 strm.avail_out returns with zero. See http://zlib.net/zlib_how.html for a
kono
parents: 51
diff changeset
43 heavily annotated example.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 6. Where's the zlib documentation (man pages, etc.)?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46
111
kono
parents: 51
diff changeset
47 It's in zlib.h . Examples of zlib usage are in the files test/example.c
kono
parents: 51
diff changeset
48 and test/minigzip.c, with more in examples/ .
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 7. Why don't you use GNU autoconf or libtool or ...?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51
111
kono
parents: 51
diff changeset
52 Because we would like to keep zlib as a very small and simple package.
kono
parents: 51
diff changeset
53 zlib is rather portable and doesn't need much configuration.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 8. I found a bug in zlib.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
111
kono
parents: 51
diff changeset
57 Most of the time, such problems are due to an incorrect usage of zlib.
kono
parents: 51
diff changeset
58 Please try to reproduce the problem with a small program and send the
kono
parents: 51
diff changeset
59 corresponding source to us at zlib@gzip.org . Do not send multi-megabyte
kono
parents: 51
diff changeset
60 data files without prior agreement.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 9. Why do I get "undefined reference to gzputc"?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 If "make test" produces something like
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 example.o(.text+0x154): undefined reference to `gzputc'
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 check that you don't have old files libz.* in /usr/lib, /usr/local/lib or
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 /usr/X11R6/lib. Remove any old versions, then do "make install".
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 10. I need a Delphi interface to zlib.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 See the contrib/delphi directory in the zlib distribution.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 11. Can zlib handle .zip archives?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 Not by itself, no. See the directory contrib/minizip in the zlib
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 distribution.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 12. Can zlib handle .Z files?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81
111
kono
parents: 51
diff changeset
82 No, sorry. You have to spawn an uncompress or gunzip subprocess, or adapt
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 the code of uncompress on your own.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 13. How can I make a Unix shared library?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86
111
kono
parents: 51
diff changeset
87 By default a shared (and a static) library is built for Unix. So:
kono
parents: 51
diff changeset
88
kono
parents: 51
diff changeset
89 make distclean
kono
parents: 51
diff changeset
90 ./configure
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 make
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
92
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 14. How do I install a shared zlib library on Unix?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 After the above, then:
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
96
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 make install
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
98
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 However, many flavors of Unix come with a shared zlib already installed.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 Before going to the trouble of compiling a shared version of zlib and
111
kono
parents: 51
diff changeset
101 trying to install it, you may want to check if it's already there! If you
kono
parents: 51
diff changeset
102 can #include <zlib.h>, it's there. The -lz option will probably link to
kono
parents: 51
diff changeset
103 it. You can check the version at the top of zlib.h or with the
kono
parents: 51
diff changeset
104 ZLIB_VERSION symbol defined in zlib.h .
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
105
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 15. I have a question about OttoPDF.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
107
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 We are not the authors of OttoPDF. The real author is on the OttoPDF web
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 site: Joel Hainley, jhainley@myndkryme.com.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
110
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 16. Can zlib decode Flate data in an Adobe PDF file?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
112
111
kono
parents: 51
diff changeset
113 Yes. See http://www.pdflib.com/ . To modify PDF forms, see
kono
parents: 51
diff changeset
114 http://sourceforge.net/projects/acroformtool/ .
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
115
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 17. Why am I getting this "register_frame_info not found" error on Solaris?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
117
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 After installing zlib 1.1.4 on Solaris 2.6, running applications using zlib
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 generates an error such as:
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
120
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 ld.so.1: rpm: fatal: relocation error: file /usr/local/lib/libz.so:
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 symbol __register_frame_info: referenced symbol not found
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
123
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 The symbol __register_frame_info is not part of zlib, it is generated by
111
kono
parents: 51
diff changeset
125 the C compiler (cc or gcc). You must recompile applications using zlib
kono
parents: 51
diff changeset
126 which have this problem. This problem is specific to Solaris. See
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 http://www.sunfreeware.com for Solaris versions of zlib and applications
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 using zlib.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
129
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 18. Why does gzip give an error on a file I make with compress/deflate?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
131
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 The compress and deflate functions produce data in the zlib format, which
111
kono
parents: 51
diff changeset
133 is different and incompatible with the gzip format. The gz* functions in
kono
parents: 51
diff changeset
134 zlib on the other hand use the gzip format. Both the zlib and gzip formats
kono
parents: 51
diff changeset
135 use the same compressed data format internally, but have different headers
kono
parents: 51
diff changeset
136 and trailers around the compressed data.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
137
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 19. Ok, so why are there two different formats?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
139
111
kono
parents: 51
diff changeset
140 The gzip format was designed to retain the directory information about a
kono
parents: 51
diff changeset
141 single file, such as the name and last modification date. The zlib format
kono
parents: 51
diff changeset
142 on the other hand was designed for in-memory and communication channel
kono
parents: 51
diff changeset
143 applications, and has a much more compact header and trailer and uses a
kono
parents: 51
diff changeset
144 faster integrity check than gzip.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
145
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 20. Well that's nice, but how do I make a gzip file in memory?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
147
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 You can request that deflate write the gzip format instead of the zlib
111
kono
parents: 51
diff changeset
149 format using deflateInit2(). You can also request that inflate decode the
kono
parents: 51
diff changeset
150 gzip format using inflateInit2(). Read zlib.h for more details.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
151
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 21. Is zlib thread-safe?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
153
111
kono
parents: 51
diff changeset
154 Yes. However any library routines that zlib uses and any application-
kono
parents: 51
diff changeset
155 provided memory allocation routines must also be thread-safe. zlib's gz*
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 functions use stdio library routines, and most of zlib's functions use the
111
kono
parents: 51
diff changeset
157 library memory allocation routines by default. zlib's *Init* functions
kono
parents: 51
diff changeset
158 allow for the application to provide custom memory allocation routines.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
159
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 Of course, you should only operate on any given zlib or gzip stream from a
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 single thread at a time.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
162
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 22. Can I use zlib in my commercial application?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
164
111
kono
parents: 51
diff changeset
165 Yes. Please read the license in zlib.h.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
166
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 23. Is zlib under the GNU license?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
168
111
kono
parents: 51
diff changeset
169 No. Please read the license in zlib.h.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
170
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 24. The license says that altered source versions must be "plainly marked". So
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 what exactly do I need to do to meet that requirement?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
173
111
kono
parents: 51
diff changeset
174 You need to change the ZLIB_VERSION and ZLIB_VERNUM #defines in zlib.h. In
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 particular, the final version number needs to be changed to "f", and an
111
kono
parents: 51
diff changeset
176 identification string should be appended to ZLIB_VERSION. Version numbers
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 x.x.x.f are reserved for modifications to zlib by others than the zlib
111
kono
parents: 51
diff changeset
178 maintainers. For example, if the version of the base zlib you are altering
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 is "1.2.3.4", then in zlib.h you should change ZLIB_VERNUM to 0x123f, and
111
kono
parents: 51
diff changeset
180 ZLIB_VERSION to something like "1.2.3.f-zachary-mods-v3". You can also
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 update the version strings in deflate.c and inftrees.c.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
182
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 For altered source distributions, you should also note the origin and
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 nature of the changes in zlib.h, as well as in ChangeLog and README, along
111
kono
parents: 51
diff changeset
185 with the dates of the alterations. The origin should include at least your
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 name (or your company's name), and an email address to contact for help or
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
187 issues with the library.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
188
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 Note that distributing a compiled zlib library along with zlib.h and
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
190 zconf.h is also a source distribution, and so you should change
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 ZLIB_VERSION and ZLIB_VERNUM and note the origin and nature of the changes
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 in zlib.h as you would for a full source distribution.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
193
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 25. Will zlib work on a big-endian or little-endian architecture, and can I
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
195 exchange compressed data between them?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
196
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 Yes and yes.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
198
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 26. Will zlib work on a 64-bit machine?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
200
111
kono
parents: 51
diff changeset
201 Yes. It has been tested on 64-bit machines, and has no dependence on any
kono
parents: 51
diff changeset
202 data types being limited to 32-bits in length. If you have any
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
203 difficulties, please provide a complete problem report to zlib@gzip.org
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
204
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 27. Will zlib decompress data from the PKWare Data Compression Library?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
206
111
kono
parents: 51
diff changeset
207 No. The PKWare DCL uses a completely different compressed data format than
kono
parents: 51
diff changeset
208 does PKZIP and zlib. However, you can look in zlib's contrib/blast
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
209 directory for a possible solution to your problem.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
210
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
211 28. Can I access data randomly in a compressed stream?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
212
111
kono
parents: 51
diff changeset
213 No, not without some preparation. If when compressing you periodically use
kono
parents: 51
diff changeset
214 Z_FULL_FLUSH, carefully write all the pending data at those points, and
kono
parents: 51
diff changeset
215 keep an index of those locations, then you can start decompression at those
kono
parents: 51
diff changeset
216 points. You have to be careful to not use Z_FULL_FLUSH too often, since it
kono
parents: 51
diff changeset
217 can significantly degrade compression. Alternatively, you can scan a
kono
parents: 51
diff changeset
218 deflate stream once to generate an index, and then use that index for
kono
parents: 51
diff changeset
219 random access. See examples/zran.c .
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
220
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
221 29. Does zlib work on MVS, OS/390, CICS, etc.?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
222
111
kono
parents: 51
diff changeset
223 It has in the past, but we have not heard of any recent evidence. There
kono
parents: 51
diff changeset
224 were working ports of zlib 1.1.4 to MVS, but those links no longer work.
kono
parents: 51
diff changeset
225 If you know of recent, successful applications of zlib on these operating
kono
parents: 51
diff changeset
226 systems, please let us know. Thanks.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
227
111
kono
parents: 51
diff changeset
228 30. Is there some simpler, easier to read version of inflate I can look at to
kono
parents: 51
diff changeset
229 understand the deflate format?
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
230
111
kono
parents: 51
diff changeset
231 First off, you should read RFC 1951. Second, yes. Look in zlib's
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
232 contrib/puff directory.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
233
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
234 31. Does zlib infringe on any patents?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
235
111
kono
parents: 51
diff changeset
236 As far as we know, no. In fact, that was originally the whole point behind
kono
parents: 51
diff changeset
237 zlib. Look here for some more information:
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
238
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 http://www.gzip.org/#faq11
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
240
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
241 32. Can zlib work with greater than 4 GB of data?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
242
111
kono
parents: 51
diff changeset
243 Yes. inflate() and deflate() will process any amount of data correctly.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
244 Each call of inflate() or deflate() is limited to input and output chunks
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
245 of the maximum value that can be stored in the compiler's "unsigned int"
111
kono
parents: 51
diff changeset
246 type, but there is no limit to the number of chunks. Note however that the
kono
parents: 51
diff changeset
247 strm.total_in and strm_total_out counters may be limited to 4 GB. These
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
248 counters are provided as a convenience and are not used internally by
111
kono
parents: 51
diff changeset
249 inflate() or deflate(). The application can easily set up its own counters
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
250 updated after each call of inflate() or deflate() to count beyond 4 GB.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
251 compress() and uncompress() may be limited to 4 GB, since they operate in a
111
kono
parents: 51
diff changeset
252 single call. gzseek() and gztell() may be limited to 4 GB depending on how
kono
parents: 51
diff changeset
253 zlib is compiled. See the zlibCompileFlags() function in zlib.h.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
254
111
kono
parents: 51
diff changeset
255 The word "may" appears several times above since there is a 4 GB limit only
kono
parents: 51
diff changeset
256 if the compiler's "long" type is 32 bits. If the compiler's "long" type is
kono
parents: 51
diff changeset
257 64 bits, then the limit is 16 exabytes.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
258
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
259 33. Does zlib have any security vulnerabilities?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
260
111
kono
parents: 51
diff changeset
261 The only one that we are aware of is potentially in gzprintf(). If zlib is
kono
parents: 51
diff changeset
262 compiled to use sprintf() or vsprintf(), then there is no protection
kono
parents: 51
diff changeset
263 against a buffer overflow of an 8K string space (or other value as set by
kono
parents: 51
diff changeset
264 gzbuffer()), other than the caller of gzprintf() assuring that the output
kono
parents: 51
diff changeset
265 will not exceed 8K. On the other hand, if zlib is compiled to use
kono
parents: 51
diff changeset
266 snprintf() or vsnprintf(), which should normally be the case, then there is
kono
parents: 51
diff changeset
267 no vulnerability. The ./configure script will display warnings if an
kono
parents: 51
diff changeset
268 insecure variation of sprintf() will be used by gzprintf(). Also the
kono
parents: 51
diff changeset
269 zlibCompileFlags() function will return information on what variant of
kono
parents: 51
diff changeset
270 sprintf() is used by gzprintf().
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
271
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
272 If you don't have snprintf() or vsnprintf() and would like one, you can
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
273 find a portable implementation here:
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
274
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
275 http://www.ijs.si/software/snprintf/
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
276
111
kono
parents: 51
diff changeset
277 Note that you should be using the most recent version of zlib. Versions
kono
parents: 51
diff changeset
278 1.1.3 and before were subject to a double-free vulnerability, and versions
kono
parents: 51
diff changeset
279 1.2.1 and 1.2.2 were subject to an access exception when decompressing
kono
parents: 51
diff changeset
280 invalid compressed data.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
281
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
282 34. Is there a Java version of zlib?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
283
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
284 Probably what you want is to use zlib in Java. zlib is already included
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
285 as part of the Java SDK in the java.util.zip package. If you really want
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
286 a version of zlib written in the Java language, look on the zlib home
111
kono
parents: 51
diff changeset
287 page for links: http://zlib.net/ .
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
288
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
289 35. I get this or that compiler or source-code scanner warning when I crank it
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
290 up to maximally-pedantic. Can't you guys write proper code?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
291
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
292 Many years ago, we gave up attempting to avoid warnings on every compiler
111
kono
parents: 51
diff changeset
293 in the universe. It just got to be a waste of time, and some compilers
kono
parents: 51
diff changeset
294 were downright silly as well as contradicted each other. So now, we simply
kono
parents: 51
diff changeset
295 make sure that the code always works.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
296
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
297 36. Valgrind (or some similar memory access checker) says that deflate is
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
298 performing a conditional jump that depends on an uninitialized value.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
299 Isn't that a bug?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
300
111
kono
parents: 51
diff changeset
301 No. That is intentional for performance reasons, and the output of deflate
kono
parents: 51
diff changeset
302 is not affected. This only started showing up recently since zlib 1.2.x
kono
parents: 51
diff changeset
303 uses malloc() by default for allocations, whereas earlier versions used
kono
parents: 51
diff changeset
304 calloc(), which zeros out the allocated memory. Even though the code was
kono
parents: 51
diff changeset
305 correct, versions 1.2.4 and later was changed to not stimulate these
kono
parents: 51
diff changeset
306 checkers.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
307
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
308 37. Will zlib read the (insert any ancient or arcane format here) compressed
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
309 data format?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
310
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
311 Probably not. Look in the comp.compression FAQ for pointers to various
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
312 formats and associated software.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
313
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
314 38. How can I encrypt/decrypt zip files with zlib?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
315
111
kono
parents: 51
diff changeset
316 zlib doesn't support encryption. The original PKZIP encryption is very
kono
parents: 51
diff changeset
317 weak and can be broken with freely available programs. To get strong
kono
parents: 51
diff changeset
318 encryption, use GnuPG, http://www.gnupg.org/ , which already includes zlib
kono
parents: 51
diff changeset
319 compression. For PKZIP compatible "encryption", look at
kono
parents: 51
diff changeset
320 http://www.info-zip.org/
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
321
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
322 39. What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
323
111
kono
parents: 51
diff changeset
324 "gzip" is the gzip format, and "deflate" is the zlib format. They should
kono
parents: 51
diff changeset
325 probably have called the second one "zlib" instead to avoid confusion with
kono
parents: 51
diff changeset
326 the raw deflate compressed data format. While the HTTP 1.1 RFC 2616
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
327 correctly points to the zlib specification in RFC 1950 for the "deflate"
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
328 transfer encoding, there have been reports of servers and browsers that
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
329 incorrectly produce or expect raw deflate data per the deflate
111
kono
parents: 51
diff changeset
330 specification in RFC 1951, most notably Microsoft. So even though the
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
331 "deflate" transfer encoding using the zlib format would be the more
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
332 efficient approach (and in fact exactly what the zlib format was designed
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
333 for), using the "gzip" transfer encoding is probably more reliable due to
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
334 an unfortunate choice of name on the part of the HTTP 1.1 authors.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
335
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
336 Bottom line: use the gzip format for HTTP 1.1 encoding.
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
337
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
338 40. Does zlib support the new "Deflate64" format introduced by PKWare?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
339
111
kono
parents: 51
diff changeset
340 No. PKWare has apparently decided to keep that format proprietary, since
kono
parents: 51
diff changeset
341 they have not documented it as they have previous compression formats. In
kono
parents: 51
diff changeset
342 any case, the compression improvements are so modest compared to other more
kono
parents: 51
diff changeset
343 modern approaches, that it's not worth the effort to implement.
kono
parents: 51
diff changeset
344
kono
parents: 51
diff changeset
345 41. I'm having a problem with the zip functions in zlib, can you help?
kono
parents: 51
diff changeset
346
kono
parents: 51
diff changeset
347 There are no zip functions in zlib. You are probably using minizip by
kono
parents: 51
diff changeset
348 Giles Vollant, which is found in the contrib directory of zlib. It is not
kono
parents: 51
diff changeset
349 part of zlib. In fact none of the stuff in contrib is part of zlib. The
kono
parents: 51
diff changeset
350 files in there are not supported by the zlib authors. You need to contact
kono
parents: 51
diff changeset
351 the authors of the respective contribution for help.
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
352
111
kono
parents: 51
diff changeset
353 42. The match.asm code in contrib is under the GNU General Public License.
kono
parents: 51
diff changeset
354 Since it's part of zlib, doesn't that mean that all of zlib falls under the
kono
parents: 51
diff changeset
355 GNU GPL?
kono
parents: 51
diff changeset
356
kono
parents: 51
diff changeset
357 No. The files in contrib are not part of zlib. They were contributed by
kono
parents: 51
diff changeset
358 other authors and are provided as a convenience to the user within the zlib
kono
parents: 51
diff changeset
359 distribution. Each item in contrib has its own license.
kono
parents: 51
diff changeset
360
kono
parents: 51
diff changeset
361 43. Is zlib subject to export controls? What is its ECCN?
kono
parents: 51
diff changeset
362
kono
parents: 51
diff changeset
363 zlib is not subject to export controls, and so is classified as EAR99.
kono
parents: 51
diff changeset
364
kono
parents: 51
diff changeset
365 44. Can you please sign these lengthy legal documents and fax them back to us
51
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
366 so that we can use your software in our product?
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
367
ae3a4bfb450b add some files of version 4.4.3 that have been forgotten.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
368 No. Go away. Shoo.