summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--FAQ14
-rw-r--r--Makefile2
-rw-r--r--Makefile.in2
-rw-r--r--README4
-rwxr-xr-xconfigure2
-rw-r--r--crc32.c2
-rw-r--r--deflate.c147
-rw-r--r--deflate.h10
-rw-r--r--gzio.c2
-rw-r--r--infback.c15
-rw-r--r--inflate.c25
-rw-r--r--inflate.h7
-rw-r--r--inftrees.c12
-rw-r--r--inftrees.h4
-rw-r--r--minigzip.c2
-rw-r--r--qnx/package.qpg141
-rw-r--r--zlib.34
-rw-r--r--zlib.h20
-rw-r--r--zutil.c2
20 files changed, 335 insertions, 92 deletions
diff --git a/ChangeLog b/ChangeLog
index 18af4cb..8e3d521 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
1 1
2 ChangeLog file for zlib 2 ChangeLog file for zlib
3Changes in 1.2.0.4 (10 August 2003)
4- Minor FAQ updates
5- Be more strict when checking inflateInit2's windowBits parameter
6- Change NO_GUNZIP compile option to NO_GZIP to cover deflate as well
7- Add gzip wrapper option to deflateInit2 using windowBits
8- Add updated QNX rule in configure and qnx directory [Bonnefoy]
9- Make inflate distance-too-far checks more rigorous
10- Clean up FAR usage in inflate
11- Add casting to sizeof() in gzio.c and minigzip.c
12
3Changes in 1.2.0.3 (19 July 2003) 13Changes in 1.2.0.3 (19 July 2003)
4- Fix silly error in gzungetc() implementation [Vollant] 14- Fix silly error in gzungetc() implementation [Vollant]
5- Update contrib/minizip and contrib/vstudio [Vollant] 15- Update contrib/minizip and contrib/vstudio [Vollant]
diff --git a/FAQ b/FAQ
index c87759c..e9bc6fc 100644
--- a/FAQ
+++ b/FAQ
@@ -122,8 +122,16 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html
122 122
12318. Well that's nice, but how do I make a gzip file in memory? 12318. Well that's nice, but how do I make a gzip file in memory?
124 124
125 Read RFC 1952 for the gzip header and trailer format, and roll your own 125 You can request that deflate write the gzip format instead of the zlib
126 gzip formatted data using raw deflate and crc32(). 126 format using deflateInit2(). You can also request that inflate decode
127 the gzip format using inflateInit2(). Read zlib.h for more details.
128
129 Note that you cannot specify special gzip header contents (e.g. a file
130 name or modification date), nor will inflate tell you what was in the
131 gzip header. If you need to customize the header or see what's in it,
132 you can use the raw deflate and inflate operations and the crc32()
133 function and roll your own gzip encoding and decoding. Read the gzip
134 RFC 1952 for details of the header and trailer format.
127 135
12819. Is zlib thread-safe? 13619. Is zlib thread-safe?
129 137
@@ -253,7 +261,7 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html
25332. Is there a Java version of zlib? 26132. Is there a Java version of zlib?
254 262
255 Probably what you want is to use zlib in Java. zlib is already included 263 Probably what you want is to use zlib in Java. zlib is already included
256 as part of the Java SDK in the java.util.zip class. If you really want 264 as part of the Java SDK in the java.util.zip package. If you really want
257 a version of zlib written in the Java language, look on the zlib home 265 a version of zlib written in the Java language, look on the zlib home
258 page for links: http://www.zlib.org/ 266 page for links: http://www.zlib.org/
259 267
diff --git a/Makefile b/Makefile
index b1370ef..425ad35 100644
--- a/Makefile
+++ b/Makefile
@@ -24,7 +24,7 @@ LDFLAGS=libz.a
24LDSHARED=$(CC) 24LDSHARED=$(CC)
25CPP=$(CC) -E 25CPP=$(CC) -E
26 26
27VER=1.2.0.3 27VER=1.2.0.4
28LIBS=libz.a 28LIBS=libz.a
29SHAREDLIB=libz.so 29SHAREDLIB=libz.so
30 30
diff --git a/Makefile.in b/Makefile.in
index b1370ef..425ad35 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -24,7 +24,7 @@ LDFLAGS=libz.a
24LDSHARED=$(CC) 24LDSHARED=$(CC)
25CPP=$(CC) -E 25CPP=$(CC) -E
26 26
27VER=1.2.0.3 27VER=1.2.0.4
28LIBS=libz.a 28LIBS=libz.a
29SHAREDLIB=libz.so 29SHAREDLIB=libz.so
30 30
diff --git a/README b/README
index 9c40c48..f3f34ba 100644
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
1ZLIB DATA COMPRESSION LIBRARY 1ZLIB DATA COMPRESSION LIBRARY
2 2
3zlib 1.2.0.3 is a general purpose data compression library. All the code is 3zlib 1.2.0.4 is a general purpose data compression library. All the code is
4thread safe. The data format used by the zlib library is described by RFCs 4thread safe. The data format used by the zlib library is described by RFCs
5(Request for Comments) 1950 to 1952 in the files 5(Request for Comments) 1950 to 1952 in the files
6http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) 6http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format)
@@ -34,7 +34,7 @@ Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997
34issue of Dr. Dobb's Journal; a copy of the article is available in 34issue of Dr. Dobb's Journal; a copy of the article is available in
35http://dogma.net/markn/articles/zlibtool/zlibtool.htm 35http://dogma.net/markn/articles/zlibtool/zlibtool.htm
36 36
37The changes made in version 1.2.0.3 are documented in the file ChangeLog. 37The changes made in version 1.2.0.4 are documented in the file ChangeLog.
38 38
39Unsupported third party contributions are provided in directory "contrib". 39Unsupported third party contributions are provided in directory "contrib".
40 40
diff --git a/configure b/configure
index 68bfc88..39f5d8d 100755
--- a/configure
+++ b/configure
@@ -78,6 +78,8 @@ if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) 2>/dev/null; then
78 CFLAGS="$cflags" 78 CFLAGS="$cflags"
79 case `(uname -s || echo unknown) 2>/dev/null` in 79 case `(uname -s || echo unknown) 2>/dev/null` in
80 Linux | linux) LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1"};; 80 Linux | linux) LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1"};;
81 QNX*) #This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4 (alain.bonnefoy@icbt.com)
82 LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"};;
81 HP-UX*) LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"} 83 HP-UX*) LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"}
82 shared_ext='.sl' 84 shared_ext='.sl'
83 SHAREDLIB='libz.sl';; 85 SHAREDLIB='libz.sl';;
diff --git a/crc32.c b/crc32.c
index f163fe1..1622569 100644
--- a/crc32.c
+++ b/crc32.c
@@ -18,7 +18,7 @@
18# endif /* !DYNAMIC_CRC_TABLE */ 18# endif /* !DYNAMIC_CRC_TABLE */
19#endif /* MAKECRCH */ 19#endif /* MAKECRCH */
20 20
21#include "zutil.h" 21#include "zutil.h" /* for STDC and FAR definitions */
22 22
23#define local static 23#define local static
24 24
diff --git a/deflate.c b/deflate.c
index 77b2dd5..4b38251 100644
--- a/deflate.c
+++ b/deflate.c
@@ -52,7 +52,7 @@
52#include "deflate.h" 52#include "deflate.h"
53 53
54const char deflate_copyright[] = 54const char deflate_copyright[] =
55 " deflate 1.2.0.3 Copyright 1995-2003 Jean-loup Gailly "; 55 " deflate 1.2.0.4 Copyright 1995-2003 Jean-loup Gailly ";
56/* 56/*
57 If you use the zlib library in a product, an acknowledgment is welcome 57 If you use the zlib library in a product, an acknowledgment is welcome
58 in the documentation of your product. If for some reason you cannot 58 in the documentation of your product. If for some reason you cannot
@@ -132,12 +132,12 @@ typedef struct config_s {
132local const config configuration_table[2] = { 132local const config configuration_table[2] = {
133/* good lazy nice chain */ 133/* good lazy nice chain */
134/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */ 134/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */
135/* 1 */ {4, 4, 8, 4, deflate_fast}}; /* maximum speed, no lazy matches */ 135/* 1 */ {4, 4, 8, 4, deflate_fast}}; /* max speed, no lazy matches */
136#else 136#else
137local const config configuration_table[10] = { 137local const config configuration_table[10] = {
138/* good lazy nice chain */ 138/* good lazy nice chain */
139/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */ 139/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */
140/* 1 */ {4, 4, 8, 4, deflate_fast}, /* maximum speed, no lazy matches */ 140/* 1 */ {4, 4, 8, 4, deflate_fast}, /* max speed, no lazy matches */
141/* 2 */ {4, 5, 16, 8, deflate_fast}, 141/* 2 */ {4, 5, 16, 8, deflate_fast},
142/* 3 */ {4, 6, 32, 32, deflate_fast}, 142/* 3 */ {4, 6, 32, 32, deflate_fast},
143 143
@@ -146,7 +146,7 @@ local const config configuration_table[10] = {
146/* 6 */ {8, 16, 128, 128, deflate_slow}, 146/* 6 */ {8, 16, 128, 128, deflate_slow},
147/* 7 */ {8, 32, 128, 256, deflate_slow}, 147/* 7 */ {8, 32, 128, 256, deflate_slow},
148/* 8 */ {32, 128, 258, 1024, deflate_slow}, 148/* 8 */ {32, 128, 258, 1024, deflate_slow},
149/* 9 */ {32, 258, 258, 4096, deflate_slow}}; /* maximum compression */ 149/* 9 */ {32, 258, 258, 4096, deflate_slow}}; /* max compression */
150#endif 150#endif
151 151
152/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4 152/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4
@@ -225,7 +225,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
225 int stream_size; 225 int stream_size;
226{ 226{
227 deflate_state *s; 227 deflate_state *s;
228 int noheader = 0; 228 int wrap = 1;
229 static const char my_version[] = ZLIB_VERSION; 229 static const char my_version[] = ZLIB_VERSION;
230 230
231 ushf *overlay; 231 ushf *overlay;
@@ -252,10 +252,16 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
252 if (level == Z_DEFAULT_COMPRESSION) level = 6; 252 if (level == Z_DEFAULT_COMPRESSION) level = 6;
253#endif 253#endif
254 254
255 if (windowBits < 0) { /* undocumented feature: suppress zlib header */ 255 if (windowBits < 0) { /* suppress zlib wrapper */
256 noheader = 1; 256 wrap = 0;
257 windowBits = -windowBits; 257 windowBits = -windowBits;
258 } 258 }
259#ifdef GZIP
260 else if (windowBits > 15) {
261 wrap = 2; /* write gzip wrapper instead */
262 windowBits -= 16;
263 }
264#endif
259 if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED || 265 if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED ||
260 windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || 266 windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
261 strategy < 0 || strategy > Z_RLE) { 267 strategy < 0 || strategy > Z_RLE) {
@@ -267,7 +273,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
267 strm->state = (struct internal_state FAR *)s; 273 strm->state = (struct internal_state FAR *)s;
268 s->strm = strm; 274 s->strm = strm;
269 275
270 s->noheader = noheader; 276 s->wrap = wrap;
271 s->w_bits = windowBits; 277 s->w_bits = windowBits;
272 s->w_size = 1 << s->w_bits; 278 s->w_size = 1 << s->w_bits;
273 s->w_mask = s->w_size - 1; 279 s->w_mask = s->w_size - 1;
@@ -316,11 +322,12 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
316 IPos hash_head = 0; 322 IPos hash_head = 0;
317 323
318 if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL || 324 if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL ||
319 (!strm->state->noheader && strm->state->status != INIT_STATE)) 325 strm->state->wrap == 2 ||
326 (strm->state->wrap == 1 && strm->state->status != INIT_STATE))
320 return Z_STREAM_ERROR; 327 return Z_STREAM_ERROR;
321 328
322 s = strm->state; 329 s = strm->state;
323 if (!s->noheader) 330 if (s->wrap)
324 strm->adler = adler32(strm->adler, dictionary, dictLength); 331 strm->adler = adler32(strm->adler, dictionary, dictLength);
325 332
326 if (length < MIN_MATCH) return Z_OK; 333 if (length < MIN_MATCH) return Z_OK;
@@ -364,11 +371,15 @@ int ZEXPORT deflateReset (strm)
364 s->pending = 0; 371 s->pending = 0;
365 s->pending_out = s->pending_buf; 372 s->pending_out = s->pending_buf;
366 373
367 if (s->noheader < 0) { 374 if (s->wrap < 0) {
368 s->noheader = 0; /* was set to -1 by deflate(..., Z_FINISH); */ 375 s->wrap = -s->wrap; /* was made negative by deflate(..., Z_FINISH); */
369 } 376 }
370 s->status = s->noheader ? BUSY_STATE : INIT_STATE; 377 s->status = s->wrap ? INIT_STATE : BUSY_STATE;
371 strm->adler = 1; 378 strm->adler =
379#ifdef GZIP
380 s->wrap == 2 ? crc32(0L, Z_NULL, 0) :
381#endif
382 adler32(0L, Z_NULL, 0);
372 s->last_flush = Z_NO_FLUSH; 383 s->last_flush = Z_NO_FLUSH;
373 384
374 _tr_init(s); 385 _tr_init(s);
@@ -428,7 +439,7 @@ int ZEXPORT deflateParams(strm, level, strategy)
428 * can emit on compressed data for some combinations of the parameters. 439 * can emit on compressed data for some combinations of the parameters.
429 * 440 *
430 * This function could be more sophisticated to provide closer upper bounds 441 * This function could be more sophisticated to provide closer upper bounds
431 * for every combination of windowBits and memLevel, as well as noheader. 442 * for every combination of windowBits and memLevel, as well as wrap.
432 * But even the conservative upper bound of about 14% expansion does not 443 * But even the conservative upper bound of about 14% expansion does not
433 * seem onerous for output buffer allocation. 444 * seem onerous for output buffer allocation.
434 */ 445 */
@@ -519,33 +530,53 @@ int ZEXPORT deflate (strm, flush)
519 old_flush = s->last_flush; 530 old_flush = s->last_flush;
520 s->last_flush = flush; 531 s->last_flush = flush;
521 532
522 /* Write the zlib header */ 533 /* Write the header */
523 if (s->status == INIT_STATE) { 534 if (s->status == INIT_STATE) {
524 535#ifdef GZIP
525 uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8; 536 if (s->wrap == 2) {
526 uInt level_flags; 537 put_byte(s, 31);
527 538 put_byte(s, 139);
528 if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2) 539 put_byte(s, 8);
529 level_flags = 0; 540 put_byte(s, 0);
530 else if (s->level < 6) 541 put_byte(s, 0);
531 level_flags = 1; 542 put_byte(s, 0);
532 else if (s->level == 6) 543 put_byte(s, 0);
533 level_flags = 2; 544 put_byte(s, 0);
545 put_byte(s, s->level == 9 ? 2 :
546 (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ?
547 4 : 0));
548 put_byte(s, 255);
549 s->status = BUSY_STATE;
550 strm->adler = crc32(0L, Z_NULL, 0);
551 }
534 else 552 else
535 level_flags = 3; 553#endif
536 header |= (level_flags << 6); 554 {
537 if (s->strstart != 0) header |= PRESET_DICT; 555 uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8;
538 header += 31 - (header % 31); 556 uInt level_flags;
539 557
540 s->status = BUSY_STATE; 558 if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2)
541 putShortMSB(s, header); 559 level_flags = 0;
542 560 else if (s->level < 6)
543 /* Save the adler32 of the preset dictionary: */ 561 level_flags = 1;
544 if (s->strstart != 0) { 562 else if (s->level == 6)
545 putShortMSB(s, (uInt)(strm->adler >> 16)); 563 level_flags = 2;
546 putShortMSB(s, (uInt)(strm->adler & 0xffff)); 564 else
565 level_flags = 3;
566 header |= (level_flags << 6);
567 if (s->strstart != 0) header |= PRESET_DICT;
568 header += 31 - (header % 31);
569
570 s->status = BUSY_STATE;
571 putShortMSB(s, header);
572
573 /* Save the adler32 of the preset dictionary: */
574 if (s->strstart != 0) {
575 putShortMSB(s, (uInt)(strm->adler >> 16));
576 putShortMSB(s, (uInt)(strm->adler & 0xffff));
577 }
578 strm->adler = adler32(0L, Z_NULL, 0);
547 } 579 }
548 strm->adler = 1L;
549 } 580 }
550 581
551 /* Flush as much pending output as possible */ 582 /* Flush as much pending output as possible */
@@ -622,16 +653,31 @@ int ZEXPORT deflate (strm, flush)
622 Assert(strm->avail_out > 0, "bug2"); 653 Assert(strm->avail_out > 0, "bug2");
623 654
624 if (flush != Z_FINISH) return Z_OK; 655 if (flush != Z_FINISH) return Z_OK;
625 if (s->noheader) return Z_STREAM_END; 656 if (s->wrap <= 0) return Z_STREAM_END;
626 657
627 /* Write the zlib trailer (adler32) */ 658 /* Write the trailer */
628 putShortMSB(s, (uInt)(strm->adler >> 16)); 659#ifdef GZIP
629 putShortMSB(s, (uInt)(strm->adler & 0xffff)); 660 if (s->wrap == 2) {
661 put_byte(s, (Byte)(strm->adler & 0xff));
662 put_byte(s, (Byte)((strm->adler >> 8) & 0xff));
663 put_byte(s, (Byte)((strm->adler >> 16) & 0xff));
664 put_byte(s, (Byte)((strm->adler >> 24) & 0xff));
665 put_byte(s, (Byte)(strm->total_in & 0xff));
666 put_byte(s, (Byte)((strm->total_in >> 8) & 0xff));
667 put_byte(s, (Byte)((strm->total_in >> 16) & 0xff));
668 put_byte(s, (Byte)((strm->total_in >> 24) & 0xff));
669 }
670 else
671#endif
672 {
673 putShortMSB(s, (uInt)(strm->adler >> 16));
674 putShortMSB(s, (uInt)(strm->adler & 0xffff));
675 }
630 flush_pending(strm); 676 flush_pending(strm);
631 /* If avail_out is zero, the application will call deflate again 677 /* If avail_out is zero, the application will call deflate again
632 * to flush the rest. 678 * to flush the rest.
633 */ 679 */
634 s->noheader = -1; /* write the trailer only once! */ 680 if (s->wrap > 0) s->wrap = -s->wrap; /* write the trailer only once! */
635 return s->pending != 0 ? Z_OK : Z_STREAM_END; 681 return s->pending != 0 ? Z_OK : Z_STREAM_END;
636} 682}
637 683
@@ -740,9 +786,14 @@ local int read_buf(strm, buf, size)
740 786
741 strm->avail_in -= len; 787 strm->avail_in -= len;
742 788
743 if (!strm->state->noheader) { 789 if (strm->state->wrap == 1) {
744 strm->adler = adler32(strm->adler, strm->next_in, len); 790 strm->adler = adler32(strm->adler, strm->next_in, len);
745 } 791 }
792#ifdef GZIP
793 else if (strm->state->wrap == 2) {
794 strm->adler = crc32(strm->adler, strm->next_in, len);
795 }
796#endif
746 zmemcpy(buf, strm->next_in, len); 797 zmemcpy(buf, strm->next_in, len);
747 strm->next_in += len; 798 strm->next_in += len;
748 strm->total_in += len; 799 strm->total_in += len;
@@ -1044,7 +1095,7 @@ local void fill_window(s)
1044 1095
1045 } else if (more == (unsigned)(-1)) { 1096 } else if (more == (unsigned)(-1)) {
1046 /* Very unlikely, but possible on 16 bit machine if 1097 /* Very unlikely, but possible on 16 bit machine if
1047 * strstart == 0 && lookahead == 1 (input done one byte at time) 1098 * strstart == 0 && lookahead == 1 (input done a byte at time)
1048 */ 1099 */
1049 more--; 1100 more--;
1050 } 1101 }
@@ -1271,7 +1322,7 @@ local block_state deflate_fast(s, flush)
1271#ifndef FASTEST 1322#ifndef FASTEST
1272 if (s->match_length <= s->max_insert_length && 1323 if (s->match_length <= s->max_insert_length &&
1273 s->lookahead >= MIN_MATCH) { 1324 s->lookahead >= MIN_MATCH) {
1274 s->match_length--; /* string at strstart already in hash table */ 1325 s->match_length--; /* string at strstart already in table */
1275 do { 1326 do {
1276 s->strstart++; 1327 s->strstart++;
1277 INSERT_STRING(s, s->strstart, hash_head); 1328 INSERT_STRING(s, s->strstart, hash_head);
diff --git a/deflate.h b/deflate.h
index 0e8417d..de3e6ce 100644
--- a/deflate.h
+++ b/deflate.h
@@ -15,6 +15,14 @@
15 15
16#include "zutil.h" 16#include "zutil.h"
17 17
18/* define NO_GZIP when compiling if you want to disable gzip header and
19 trailer creation by deflate(). NO_GZIP would be used to avoid linking in
20 the crc code when it is not needed. For shared libraries, gzip encoding
21 should be left enabled. */
22#ifndef NO_GZIP
23# define GZIP
24#endif
25
18/* =========================================================================== 26/* ===========================================================================
19 * Internal compression state. 27 * Internal compression state.
20 */ 28 */
@@ -86,7 +94,7 @@ typedef struct internal_state {
86 ulg pending_buf_size; /* size of pending_buf */ 94 ulg pending_buf_size; /* size of pending_buf */
87 Bytef *pending_out; /* next pending byte to output to the stream */ 95 Bytef *pending_out; /* next pending byte to output to the stream */
88 int pending; /* nb of bytes in the pending buffer */ 96 int pending; /* nb of bytes in the pending buffer */
89 int noheader; /* suppress zlib header and adler32 */ 97 int wrap; /* bit 0 true for zlib, bit 1 true for gzip */
90 Byte data_type; /* UNKNOWN, BINARY or ASCII */ 98 Byte data_type; /* UNKNOWN, BINARY or ASCII */
91 Byte method; /* STORED (for zip only) or DEFLATED */ 99 Byte method; /* STORED (for zip only) or DEFLATED */
92 int last_flush; /* value of flush param for previous deflate call */ 100 int last_flush; /* value of flush param for previous deflate call */
diff --git a/gzio.c b/gzio.c
index 1beb47f..f10ade3 100644
--- a/gzio.c
+++ b/gzio.c
@@ -608,7 +608,7 @@ int ZEXPORTVA gzprintf (gzFile file, const char *format, /* args */ ...)
608 va_end(va); 608 va_end(va);
609# endif 609# endif
610#endif 610#endif
611 if (len <= 0 || len >= sizeof(buf) || buf[sizeof(buf) - 1] != 0) 611 if (len <= 0 || len >= (int)sizeof(buf) || buf[sizeof(buf) - 1] != 0)
612 return 0; 612 return 0;
613 return gzwrite(file, buf, (unsigned)len); 613 return gzwrite(file, buf, (unsigned)len);
614} 614}
diff --git a/infback.c b/infback.c
index 0aef86d..287624c 100644
--- a/infback.c
+++ b/infback.c
@@ -55,6 +55,7 @@ int stream_size;
55 state->wsize = 1U << windowBits; 55 state->wsize = 1U << windowBits;
56 state->window = window; 56 state->window = window;
57 state->write = 0; 57 state->write = 0;
58 state->whave = 0;
58 return Z_OK; 59 return Z_OK;
59} 60}
60 61
@@ -201,6 +202,7 @@ struct inflate_state FAR *state;
201 if (left == 0) { \ 202 if (left == 0) { \
202 put = state->window; \ 203 put = state->window; \
203 left = state->wsize; \ 204 left = state->wsize; \
205 state->whave = left; \
204 if (out(out_desc, put, left)) { \ 206 if (out(out_desc, put, left)) { \
205 ret = Z_BUF_ERROR; \ 207 ret = Z_BUF_ERROR; \
206 goto inf_leave; \ 208 goto inf_leave; \
@@ -216,7 +218,7 @@ struct inflate_state FAR *state;
216 in() and out() are the call-back input and output functions. When 218 in() and out() are the call-back input and output functions. When
217 inflateBack() needs more input, it calls in(). When inflateBack() has 219 inflateBack() needs more input, it calls in(). When inflateBack() has
218 filled the window with output, or when it completes with data in the 220 filled the window with output, or when it completes with data in the
219 window, it called out() to write out the data. The application must not 221 window, it calls out() to write out the data. The application must not
220 change the provided input until in() is called again or inflateBack() 222 change the provided input until in() is called again or inflateBack()
221 returns. The application must not change the window/output buffer until 223 returns. The application must not change the window/output buffer until
222 inflateBack() returns. 224 inflateBack() returns.
@@ -243,12 +245,13 @@ out_func out;
243void FAR *out_desc; 245void FAR *out_desc;
244{ 246{
245 struct inflate_state FAR *state; 247 struct inflate_state FAR *state;
246 unsigned char *next, *put; /* next input and output */ 248 unsigned char FAR *next; /* next input */
249 unsigned char FAR *put; /* next output */
247 unsigned have, left; /* available input and output */ 250 unsigned have, left; /* available input and output */
248 unsigned long hold; /* bit buffer */ 251 unsigned long hold; /* bit buffer */
249 unsigned bits; /* bits in bit buffer */ 252 unsigned bits; /* bits in bit buffer */
250 unsigned copy; /* number of stored or match bytes to copy */ 253 unsigned copy; /* number of stored or match bytes to copy */
251 unsigned char *from; /* where to copy match bytes from */ 254 unsigned char FAR *from; /* where to copy match bytes from */
252 code this; /* current decoding table entry */ 255 code this; /* current decoding table entry */
253 code last; /* parent table entry */ 256 code last; /* parent table entry */
254 unsigned len; /* length to copy for repeats, bits to drop */ 257 unsigned len; /* length to copy for repeats, bits to drop */
@@ -265,6 +268,7 @@ void FAR *out_desc;
265 strm->msg = Z_NULL; 268 strm->msg = Z_NULL;
266 state->mode = TYPE; 269 state->mode = TYPE;
267 state->last = 0; 270 state->last = 0;
271 state->whave = 0;
268 next = strm->next_in; 272 next = strm->next_in;
269 have = next != Z_NULL ? strm->avail_in : 0; 273 have = next != Z_NULL ? strm->avail_in : 0;
270 hold = 0; 274 hold = 0;
@@ -457,6 +461,8 @@ void FAR *out_desc;
457 /* use inflate_fast() if we have enough input and output */ 461 /* use inflate_fast() if we have enough input and output */
458 if (have >= 6 && left >= 258) { 462 if (have >= 6 && left >= 258) {
459 RESTORE(); 463 RESTORE();
464 if (state->whave < state->wsize)
465 state->whave = state->wsize - left;
460 inflate_fast(strm, state->wsize); 466 inflate_fast(strm, state->wsize);
461 LOAD(); 467 LOAD();
462 break; 468 break;
@@ -547,7 +553,8 @@ void FAR *out_desc;
547 state->offset += BITS(state->extra); 553 state->offset += BITS(state->extra);
548 DROPBITS(state->extra); 554 DROPBITS(state->extra);
549 } 555 }
550 if (state->offset > state->wsize) { 556 if (state->offset > state->wsize - (state->whave < state->wsize ?
557 left : 0)) {
551 strm->msg = (char *)"invalid distance too far back"; 558 strm->msg = (char *)"invalid distance too far back";
552 state->mode = BAD; 559 state->mode = BAD;
553 break; 560 break;
diff --git a/inflate.c b/inflate.c
index 0fd158d..da2bb59 100644
--- a/inflate.c
+++ b/inflate.c
@@ -113,6 +113,7 @@ z_streamp strm;
113 state->last = 0; 113 state->last = 0;
114 state->havedict = 0; 114 state->havedict = 0;
115 state->wsize = 0; 115 state->wsize = 0;
116 state->whave = 0;
116 state->hold = 0; 117 state->hold = 0;
117 state->bits = 0; 118 state->bits = 0;
118 state->lencode = state->distcode = state->next = state->codes; 119 state->lencode = state->distcode = state->next = state->codes;
@@ -150,7 +151,7 @@ int stream_size;
150 else { 151 else {
151 state->wrap = (windowBits >> 4) + 1; 152 state->wrap = (windowBits >> 4) + 1;
152#ifdef GUNZIP 153#ifdef GUNZIP
153 windowBits &= 15; 154 if (windowBits < 48) windowBits &= 15;
154#endif 155#endif
155 } 156 }
156 if (windowBits < 8 || windowBits > 15) { 157 if (windowBits < 8 || windowBits > 15) {
@@ -320,6 +321,7 @@ unsigned out;
320 if (state->wsize == 0) { 321 if (state->wsize == 0) {
321 state->wsize = 1U << state->wbits; 322 state->wsize = 1U << state->wbits;
322 state->write = 0; 323 state->write = 0;
324 state->whave = 0;
323 } 325 }
324 326
325 /* copy state->wsize or less output bytes into the circular window */ 327 /* copy state->wsize or less output bytes into the circular window */
@@ -327,6 +329,7 @@ unsigned out;
327 if (copy >= state->wsize) { 329 if (copy >= state->wsize) {
328 zmemcpy(state->window, strm->next_out - state->wsize, state->wsize); 330 zmemcpy(state->window, strm->next_out - state->wsize, state->wsize);
329 state->write = 0; 331 state->write = 0;
332 state->whave = state->wsize;
330 } 333 }
331 else { 334 else {
332 dist = state->wsize - state->write; 335 dist = state->wsize - state->write;
@@ -336,10 +339,12 @@ unsigned out;
336 if (copy) { 339 if (copy) {
337 zmemcpy(state->window, strm->next_out - copy, copy); 340 zmemcpy(state->window, strm->next_out - copy, copy);
338 state->write = copy; 341 state->write = copy;
342 state->whave = state->wsize;
339 } 343 }
340 else { 344 else {
341 state->write += dist; 345 state->write += dist;
342 if (state->write == state->wsize) state->write = 0; 346 if (state->write == state->wsize) state->write = 0;
347 if (state->whave < state->wsize) state->whave += dist;
343 } 348 }
344 } 349 }
345 return 0; 350 return 0;
@@ -531,13 +536,14 @@ z_streamp strm;
531int flush; 536int flush;
532{ 537{
533 struct inflate_state FAR *state; 538 struct inflate_state FAR *state;
534 unsigned char *next, *put; /* next input and output */ 539 unsigned char FAR *next; /* next input */
540 unsigned char FAR *put; /* next output */
535 unsigned have, left; /* available input and output */ 541 unsigned have, left; /* available input and output */
536 unsigned long hold; /* bit buffer */ 542 unsigned long hold; /* bit buffer */
537 unsigned bits; /* bits in bit buffer */ 543 unsigned bits; /* bits in bit buffer */
538 unsigned in, out; /* save starting available input and output */ 544 unsigned in, out; /* save starting available input and output */
539 unsigned copy; /* number of stored or match bytes to copy */ 545 unsigned copy; /* number of stored or match bytes to copy */
540 unsigned char *from; /* where to copy match bytes from */ 546 unsigned char FAR *from; /* where to copy match bytes from */
541 code this; /* current decoding table entry */ 547 code this; /* current decoding table entry */
542 code last; /* parent table entry */ 548 code last; /* parent table entry */
543 unsigned len; /* length to copy for repeats, bits to drop */ 549 unsigned len; /* length to copy for repeats, bits to drop */
@@ -956,8 +962,7 @@ int flush;
956 state->offset += BITS(state->extra); 962 state->offset += BITS(state->extra);
957 DROPBITS(state->extra); 963 DROPBITS(state->extra);
958 } 964 }
959 if (state->offset > (state->wsize ? state->wsize : 965 if (state->offset > state->whave + out - left) {
960 out - left)) {
961 strm->msg = (char *)"invalid distance too far back"; 966 strm->msg = (char *)"invalid distance too far back";
962 state->mode = BAD; 967 state->mode = BAD;
963 break; 968 break;
@@ -1108,12 +1113,16 @@ uInt dictLength;
1108 state->mode = MEM; 1113 state->mode = MEM;
1109 return Z_MEM_ERROR; 1114 return Z_MEM_ERROR;
1110 } 1115 }
1111 if (dictLength > state->wsize) 1116 if (dictLength > state->wsize) {
1112 zmemcpy(state->window, dictionary + dictLength - state->wsize, 1117 zmemcpy(state->window, dictionary + dictLength - state->wsize,
1113 state->wsize); 1118 state->wsize);
1114 else 1119 state->whave = state->wsize;
1120 }
1121 else {
1115 zmemcpy(state->window + state->wsize - dictLength, dictionary, 1122 zmemcpy(state->window + state->wsize - dictLength, dictionary,
1116 dictLength); 1123 dictLength);
1124 state->whave = dictLength;
1125 }
1117 state->havedict = 1; 1126 state->havedict = 1;
1118 Tracev((stderr, "inflate: dictionary set\n")); 1127 Tracev((stderr, "inflate: dictionary set\n"));
1119 return Z_OK; 1128 return Z_OK;
@@ -1131,7 +1140,7 @@ uInt dictLength;
1131 zero for the first call. 1140 zero for the first call.
1132 */ 1141 */
1133local unsigned syncsearch(have, buf, len) 1142local unsigned syncsearch(have, buf, len)
1134unsigned *have; 1143unsigned FAR *have;
1135unsigned char FAR *buf; 1144unsigned char FAR *buf;
1136unsigned len; 1145unsigned len;
1137{ 1146{
diff --git a/inflate.h b/inflate.h
index 2221b23..8bd40a5 100644
--- a/inflate.h
+++ b/inflate.h
@@ -8,11 +8,11 @@
8 subject to change. Applications should only use zlib.h. 8 subject to change. Applications should only use zlib.h.
9 */ 9 */
10 10
11/* define NO_GUNZIP when compiling if you want to disable gzip header and 11/* define NO_GZIP when compiling if you want to disable gzip header and
12 trailer decoding by inflate(). NO_GUNZIP would be used to avoid linking in 12 trailer decoding by inflate(). NO_GZIP would be used to avoid linking in
13 the crc code when it is not needed. For shared libraries, gzip decoding 13 the crc code when it is not needed. For shared libraries, gzip decoding
14 should be left enabled. */ 14 should be left enabled. */
15#ifndef NO_GUNZIP 15#ifndef NO_GZIP
16# define GUNZIP 16# define GUNZIP
17#endif 17#endif
18 18
@@ -88,6 +88,7 @@ struct inflate_state {
88 /* sliding window */ 88 /* sliding window */
89 unsigned wbits; /* log base 2 of requested window size */ 89 unsigned wbits; /* log base 2 of requested window size */
90 unsigned wsize; /* window size or zero if not using window */ 90 unsigned wsize; /* window size or zero if not using window */
91 unsigned whave; /* valid bytes in the window */
91 unsigned write; /* window write index */ 92 unsigned write; /* window write index */
92 unsigned char FAR *window; /* allocated sliding window, if needed */ 93 unsigned char FAR *window; /* allocated sliding window, if needed */
93 /* bit accumulator */ 94 /* bit accumulator */
diff --git a/inftrees.c b/inftrees.c
index 35ab097..f99f14e 100644
--- a/inftrees.c
+++ b/inftrees.c
@@ -9,7 +9,7 @@
9#define MAXBITS 15 9#define MAXBITS 15
10 10
11const char inflate_copyright[] = 11const char inflate_copyright[] =
12 " inflate 1.2.0.3 Copyright 1995-2003 Mark Adler "; 12 " inflate 1.2.0.4 Copyright 1995-2003 Mark Adler ";
13/* 13/*
14 If you use the zlib library in a product, an acknowledgment is welcome 14 If you use the zlib library in a product, an acknowledgment is welcome
15 in the documentation of your product. If for some reason you cannot 15 in the documentation of your product. If for some reason you cannot
@@ -33,8 +33,8 @@ int inflate_table(type, lens, codes, table, bits, work)
33codetype type; 33codetype type;
34unsigned short FAR *lens; 34unsigned short FAR *lens;
35unsigned codes; 35unsigned codes;
36code * FAR *table; 36code FAR * FAR *table;
37unsigned *bits; 37unsigned FAR *bits;
38unsigned short FAR *work; 38unsigned short FAR *work;
39{ 39{
40 unsigned len; /* a code's length in bits */ 40 unsigned len; /* a code's length in bits */
@@ -52,8 +52,8 @@ unsigned short FAR *work;
52 unsigned mask; /* mask for low root bits */ 52 unsigned mask; /* mask for low root bits */
53 code this; /* table entry for duplication */ 53 code this; /* table entry for duplication */
54 code FAR *next; /* next available space in table */ 54 code FAR *next; /* next available space in table */
55 const unsigned short *base; /* base value table to use */ 55 const unsigned short FAR *base; /* base value table to use */
56 const unsigned short *extra; /* extra bits table to use */ 56 const unsigned short FAR *extra; /* extra bits table to use */
57 int end; /* use base and extra for symbol > end */ 57 int end; /* use base and extra for symbol > end */
58 unsigned short count[MAXBITS+1]; /* number of codes of each length */ 58 unsigned short count[MAXBITS+1]; /* number of codes of each length */
59 unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ 59 unsigned short offs[MAXBITS+1]; /* offsets in table for each length */
@@ -62,7 +62,7 @@ unsigned short FAR *work;
62 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; 62 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
63 static const unsigned short lext[31] = { /* Length codes 257..285 extra */ 63 static const unsigned short lext[31] = { /* Length codes 257..285 extra */
64 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 64 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
65 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 193, 193}; 65 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 192};
66 static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ 66 static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
67 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 67 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
68 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 68 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
diff --git a/inftrees.h b/inftrees.h
index 49eeeb9..82d365a 100644
--- a/inftrees.h
+++ b/inftrees.h
@@ -51,5 +51,5 @@ typedef enum {
51} codetype; 51} codetype;
52 52
53extern int inflate_table OF((codetype type, unsigned short FAR *lens, 53extern int inflate_table OF((codetype type, unsigned short FAR *lens,
54 unsigned codes, code * FAR *table, unsigned *bits, 54 unsigned codes, code FAR * FAR *table,
55 unsigned short FAR *work)); 55 unsigned FAR *bits, unsigned short FAR *work));
diff --git a/minigzip.c b/minigzip.c
index e75108f..68e20c2 100644
--- a/minigzip.c
+++ b/minigzip.c
@@ -60,7 +60,7 @@
60#ifndef GZ_SUFFIX 60#ifndef GZ_SUFFIX
61# define GZ_SUFFIX ".gz" 61# define GZ_SUFFIX ".gz"
62#endif 62#endif
63#define SUFFIX_LEN (sizeof(GZ_SUFFIX)-1) 63#define SUFFIX_LEN ((int)sizeof(GZ_SUFFIX)-1)
64 64
65#define BUFLEN 16384 65#define BUFLEN 16384
66#define MAX_NAME_LEN 1024 66#define MAX_NAME_LEN 1024
diff --git a/qnx/package.qpg b/qnx/package.qpg
new file mode 100644
index 0000000..951f6fa
--- /dev/null
+++ b/qnx/package.qpg
@@ -0,0 +1,141 @@
1<QPG:Generation>
2 <QPG:Options>
3 <QPG:User unattended="no" verbosity="2" listfiles="yes"/>
4 <QPG:Defaults type="qnx_package"/>
5 <QPG:Source></QPG:Source>
6 <QPG:Release number="+"/>
7 <QPG:Build></QPG:Build>
8 <QPG:FileSorting strip="yes"/>
9 <QPG:Package targets="combine"/>
10 <QPG:Repository generate="yes"/>
11 <QPG:FinalDir></QPG:FinalDir>
12 <QPG:Cleanup></QPG:Cleanup>
13 </QPG:Options>
14
15 <QPG:Responsible>
16 <QPG:Company></QPG:Company>
17 <QPG:Department></QPG:Department>
18 <QPG:Group></QPG:Group>
19 <QPG:Team></QPG:Team>
20 <QPG:Employee></QPG:Employee>
21 <QPG:EmailAddress></QPG:EmailAddress>
22 </QPG:Responsible>
23
24 <QPG:Values>
25 <QPG:Files>
26 <QPG:Add file="../zconf.h" install="/opt/include/" user="root:sys" permission="644"/>
27 <QPG:Add file="../zlib.h" install="/opt/include/" user="root:sys" permission="644"/>
28 <QPG:Add file="../libz.so.1.2.0.4" install="/opt/lib/" user="root:bin" permission="644"/>
29 <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.0.4"/>
30 <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.0.4"/>
31 <QPG:Add file="../libz.so.1.2.0.4" install="/opt/lib/" component="slib"/>
32 </QPG:Files>
33
34 <QPG:PackageFilter>
35 <QPM:PackageManifest>
36 <QPM:PackageDescription>
37 <QPM:PackageType>Library</QPM:PackageType>
38 <QPM:PackageReleaseNotes></QPM:PackageReleaseNotes>
39 <QPM:PackageReleaseUrgency>Medium</QPM:PackageReleaseUrgency>
40 <QPM:PackageRepository></QPM:PackageRepository>
41 <QPM:FileVersion>2.0</QPM:FileVersion>
42 </QPM:PackageDescription>
43
44 <QPM:ProductDescription>
45 <QPM:ProductName>zlib</QPM:ProductName>
46 <QPM:ProductIdentifier>zlib</QPM:ProductIdentifier>
47 <QPM:ProductEmail>alain.bonnefoy@icbt.com</QPM:ProductEmail>
48 <QPM:VendorName>Public</QPM:VendorName>
49 <QPM:VendorInstallName>public</QPM:VendorInstallName>
50 <QPM:VendorURL>www.gzip.org/zlib</QPM:VendorURL>
51 <QPM:VendorEmbedURL></QPM:VendorEmbedURL>
52 <QPM:VendorEmail></QPM:VendorEmail>
53 <QPM:AuthorName>Jean-Loup Gailly,Mark Adler</QPM:AuthorName>
54 <QPM:AuthorURL>www.gzip.org/zlib</QPM:AuthorURL>
55 <QPM:AuthorEmbedURL></QPM:AuthorEmbedURL>
56 <QPM:AuthorEmail>zlib@gzip.org</QPM:AuthorEmail>
57 <QPM:ProductIconSmall></QPM:ProductIconSmall>
58 <QPM:ProductIconLarge></QPM:ProductIconLarge>
59 <QPM:ProductDescriptionShort>A massively spiffy yet delicately unobtrusive compression library.</QPM:ProductDescriptionShort>
60 <QPM:ProductDescriptionLong>zlib is designed to be a free, general-purpose, legally unencumbered, lossless data compression library for use on virtually any computer hardware and operating system.</QPM:ProductDescriptionLong>
61 <QPM:ProductDescriptionURL>http://www.gzip.org/zlib</QPM:ProductDescriptionURL>
62 <QPM:ProductDescriptionEmbedURL></QPM:ProductDescriptionEmbedURL>
63 </QPM:ProductDescription>
64
65 <QPM:ReleaseDescription>
66 <QPM:ReleaseVersion>1.2.0.4</QPM:ReleaseVersion>
67 <QPM:ReleaseUrgency>Medium</QPM:ReleaseUrgency>
68 <QPM:ReleaseStability>Stable</QPM:ReleaseStability>
69 <QPM:ReleaseNoteMinor></QPM:ReleaseNoteMinor>
70 <QPM:ReleaseNoteMajor></QPM:ReleaseNoteMajor>
71 <QPM:ExcludeCountries>
72 <QPM:Country></QPM:Country>
73 </QPM:ExcludeCountries>
74
75 <QPM:ReleaseCopyright>No License</QPM:ReleaseCopyright>
76 </QPM:ReleaseDescription>
77
78 <QPM:ContentDescription>
79 <QPM:ContentTopic xmlmultiple="true">Software Development/Libraries and Extensions/C Libraries</QPM:ContentTopic>
80 <QPM:ContentKeyword>zlib,compression</QPM:ContentKeyword>
81 <QPM:TargetOS>qnx6</QPM:TargetOS>
82 <QPM:HostOS>qnx6</QPM:HostOS>
83 <QPM:DisplayEnvironment xmlmultiple="true">None</QPM:DisplayEnvironment>
84 <QPM:TargetAudience xmlmultiple="true">Developer</QPM:TargetAudience>
85 </QPM:ContentDescription>
86 </QPM:PackageManifest>
87 </QPG:PackageFilter>
88
89 <QPG:PackageFilter proc="none" target="none">
90 <QPM:PackageManifest>
91 <QPM:ProductInstallationDependencies>
92 <QPM:ProductRequirements></QPM:ProductRequirements>
93 </QPM:ProductInstallationDependencies>
94
95 <QPM:ProductInstallationProcedure>
96 <QPM:Script xmlmultiple="true">
97 <QPM:ScriptName></QPM:ScriptName>
98 <QPM:ScriptType>Install</QPM:ScriptType>
99 <QPM:ScriptTiming>Post</QPM:ScriptTiming>
100 <QPM:ScriptBlocking>No</QPM:ScriptBlocking>
101 <QPM:ScriptResult>Ignore</QPM:ScriptResult>
102 <QPM:ShortDescription></QPM:ShortDescription>
103 <QPM:UseBinaries>No</QPM:UseBinaries>
104 <QPM:Priority>Optional</QPM:Priority>
105 </QPM:Script>
106 </QPM:ProductInstallationProcedure>
107 </QPM:PackageManifest>
108
109 <QPM:Launch>
110 </QPM:Launch>
111 </QPG:PackageFilter>
112
113 <QPG:PackageFilter type="core" component="none">
114 <QPM:PackageManifest>
115 <QPM:ProductInstallationProcedure>
116 <QPM:OrderDependency xmlmultiple="true">
117 <QPM:Order>InstallOver</QPM:Order>
118 <QPM:Product>zlib</QPM:Product>
119 </QPM:OrderDependency>
120 </QPM:ProductInstallationProcedure>
121 </QPM:PackageManifest>
122
123 <QPM:Launch>
124 </QPM:Launch>
125 </QPG:PackageFilter>
126
127 <QPG:PackageFilter type="core" component="dev">
128 <QPM:PackageManifest>
129 <QPM:ProductInstallationProcedure>
130 <QPM:OrderDependency xmlmultiple="true">
131 <QPM:Order>InstallOver</QPM:Order>
132 <QPM:Product>zlib-dev</QPM:Product>
133 </QPM:OrderDependency>
134 </QPM:ProductInstallationProcedure>
135 </QPM:PackageManifest>
136
137 <QPM:Launch>
138 </QPM:Launch>
139 </QPG:PackageFilter>
140 </QPG:Values>
141</QPG:Generation>
diff --git a/zlib.3 b/zlib.3
index 69cdce2..f5bdb8d 100644
--- a/zlib.3
+++ b/zlib.3
@@ -1,4 +1,4 @@
1.TH ZLIB 3 "12 May 2003" 1.TH ZLIB 3 "xx July 2003"
2.SH NAME 2.SH NAME
3zlib \- compression/decompression library 3zlib \- compression/decompression library
4.SH SYNOPSIS 4.SH SYNOPSIS
@@ -133,7 +133,7 @@ before asking for help.
133Send questions and/or comments to zlib@gzip.org, 133Send questions and/or comments to zlib@gzip.org,
134or (for the Windows DLL version) to Gilles Vollant (info@winimage.com). 134or (for the Windows DLL version) to Gilles Vollant (info@winimage.com).
135.SH AUTHORS 135.SH AUTHORS
136Version 1.2.0.3 136Version 1.2.0.4
137Copyright (C) 1995-2003 Jean-loup Gailly (jloup@gzip.org) 137Copyright (C) 1995-2003 Jean-loup Gailly (jloup@gzip.org)
138and Mark Adler (madler@alumni.caltech.edu). 138and Mark Adler (madler@alumni.caltech.edu).
139.LP 139.LP
diff --git a/zlib.h b/zlib.h
index 43a1ac6..3c4218a 100644
--- a/zlib.h
+++ b/zlib.h
@@ -1,5 +1,5 @@
1/* zlib.h -- interface of the 'zlib' general purpose compression library 1/* zlib.h -- interface of the 'zlib' general purpose compression library
2 version 1.2.0.3, July 19th, 2003 2 version 1.2.0.4, August 10th, 2003
3 3
4 Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler 4 Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler
5 5
@@ -37,8 +37,8 @@
37extern "C" { 37extern "C" {
38#endif 38#endif
39 39
40#define ZLIB_VERSION "1.2.0.3" 40#define ZLIB_VERSION "1.2.0.4"
41#define ZLIB_VERNUM 0x1203 41#define ZLIB_VERNUM 0x1204
42 42
43/* 43/*
44 The 'zlib' compression library provides in-memory compression and 44 The 'zlib' compression library provides in-memory compression and
@@ -446,15 +446,21 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
446 this version of the library. 446 this version of the library.
447 447
448 The windowBits parameter is the base two logarithm of the window size 448 The windowBits parameter is the base two logarithm of the window size
449 (the size of the history buffer). It should be in the range 8..15 for this 449 (the size of the history buffer). It should be in the range 8..15 for this
450 version of the library. Larger values of this parameter result in better 450 version of the library. Larger values of this parameter result in better
451 compression at the expense of memory usage. The default value is 15 if 451 compression at the expense of memory usage. The default value is 15 if
452 deflateInit is used instead. 452 deflateInit is used instead.
453 453
454 windowBits can also be -8..-15 for raw deflate. In this case, -windowBits 454 windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
455 determines the window size. deflate() will then generate raw deflate data 455 determines the window size. deflate() will then generate raw deflate data
456 with no zlib header or trailer, and will not compute an adler32 check value. 456 with no zlib header or trailer, and will not compute an adler32 check value.
457 457
458 windowBits can also be greater than 15 for optional gzip encoding. Add
459 16 to windowBits to write a simple gzip header and trailer around the
460 compressed data instead of a zlib wrapper. The gzip header will have no
461 file name, no extra data, no comment, no modification time (set to zero),
462 no header crc, and the operating system will be set to 255 (unknown).
463
458 The memLevel parameter specifies how much memory should be allocated 464 The memLevel parameter specifies how much memory should be allocated
459 for the internal compression state. memLevel=1 uses minimum memory but 465 for the internal compression state. memLevel=1 uses minimum memory but
460 is slow and reduces compression ratio; memLevel=9 uses maximum memory 466 is slow and reduces compression ratio; memLevel=9 uses maximum memory
@@ -801,8 +807,8 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
801 Library content (indicates missing functionality): 807 Library content (indicates missing functionality):
802 16: NO_DEFLATE -- gz* functions cannot compress (to avoid linking deflate 808 16: NO_DEFLATE -- gz* functions cannot compress (to avoid linking deflate
803 code when not needed) 809 code when not needed)
804 17: NO_GUNZIP -- inflate can't detect and decode gzip streams, to avoid 810 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect
805 linking crc code 811 and decode gzip streams (to avoid linking crc code)
806 18-19: 0 (reserved) 812 18-19: 0 (reserved)
807 813
808 Operation variations (changes in library functionality): 814 Operation variations (changes in library functionality):
diff --git a/zutil.c b/zutil.c
index b8d11a1..c85e1d5 100644
--- a/zutil.c
+++ b/zutil.c
@@ -74,7 +74,7 @@ uLong ZEXPORT zlibCompileFlags()
74#ifdef NO_DEFLATE 74#ifdef NO_DEFLATE
75 flags += 1 << 16; 75 flags += 1 << 16;
76#endif 76#endif
77#ifdef NO_GUNZIP 77#ifdef NO_GZIP
78 flags += 1 << 17; 78 flags += 1 << 17;
79#endif 79#endif
80#ifdef PKZIP_BUG_WORKAROUND 80#ifdef PKZIP_BUG_WORKAROUND