diff options
37 files changed, 1235 insertions, 551 deletions
| @@ -1,6 +1,15 @@ | |||
| 1 | 1 | ||
| 2 | ChangeLog file for zlib | 2 | ChangeLog file for zlib |
| 3 | 3 | ||
| 4 | Changes in 1.2.0.6 (13 September 2003) | ||
| 5 | - Minor FAQ updates | ||
| 6 | - Update contrib/minizip to 1.00 [Vollant] | ||
| 7 | - Remove test of gz functions in example.c when GZ_COMPRESS defined [Truta] | ||
| 8 | - Updated POSTINC comment for 68060 [Nikl] | ||
| 9 | - Added contrib/infback9 with deflate64 decoding (unsupported) | ||
| 10 | - For MVS define NO_vsnprintf and undefine FAR [van Burik] | ||
| 11 | - Add pragma for fdopen on MVS [van Burik] | ||
| 12 | |||
| 4 | Changes in 1.2.0.5 (8 September 2003) | 13 | Changes in 1.2.0.5 (8 September 2003) |
| 5 | - Add infback9 diffs to contrib | 14 | - Add infback9 diffs to contrib |
| 6 | - Add OF to inflateBackEnd() declaration in zlib.h | 15 | - Add OF to inflateBackEnd() declaration in zlib.h |
| @@ -73,8 +73,7 @@ The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html | |||
| 73 | 73 | ||
| 74 | 10. I need a Delphi interface to zlib. | 74 | 10. I need a Delphi interface to zlib. |
| 75 | 75 | ||
| 76 | See the directories contrib/delphi and contrib/delphi2 in the zlib | 76 | See the contrib/delphi directory in the zlib distribution. |
| 77 | distribution. | ||
| 78 | 77 | ||
| 79 | 11. Can zlib handle .zip archives? | 78 | 11. Can zlib handle .zip archives? |
| 80 | 79 | ||
| @@ -28,7 +28,7 @@ LDFLAGS=libz.a | |||
| 28 | LDSHARED=$(CC) | 28 | LDSHARED=$(CC) |
| 29 | CPP=$(CC) -E | 29 | CPP=$(CC) -E |
| 30 | 30 | ||
| 31 | VER=1.2.0.5 | 31 | VER=1.2.0.6 |
| 32 | LIBS=libz.a | 32 | LIBS=libz.a |
| 33 | SHAREDLIB=libz.so | 33 | SHAREDLIB=libz.so |
| 34 | 34 | ||
| @@ -137,7 +137,7 @@ uninstall: | |||
| 137 | mostlyclean: clean | 137 | mostlyclean: clean |
| 138 | clean: | 138 | clean: |
| 139 | rm -f *.o *~ example minigzip libz.a libz.so* foo.gz so_locations \ | 139 | rm -f *.o *~ example minigzip libz.a libz.so* foo.gz so_locations \ |
| 140 | _match.s maketree | 140 | _match.s maketree contrib/infback9/*.o |
| 141 | 141 | ||
| 142 | maintainer-clean: distclean | 142 | maintainer-clean: distclean |
| 143 | distclean: clean | 143 | distclean: clean |
diff --git a/Makefile.in b/Makefile.in index ac69ed9..ccf0a56 100644 --- a/Makefile.in +++ b/Makefile.in | |||
| @@ -28,7 +28,7 @@ LDFLAGS=libz.a | |||
| 28 | LDSHARED=$(CC) | 28 | LDSHARED=$(CC) |
| 29 | CPP=$(CC) -E | 29 | CPP=$(CC) -E |
| 30 | 30 | ||
| 31 | VER=1.2.0.5 | 31 | VER=1.2.0.6 |
| 32 | LIBS=libz.a | 32 | LIBS=libz.a |
| 33 | SHAREDLIB=libz.so | 33 | SHAREDLIB=libz.so |
| 34 | 34 | ||
| @@ -137,7 +137,7 @@ uninstall: | |||
| 137 | mostlyclean: clean | 137 | mostlyclean: clean |
| 138 | clean: | 138 | clean: |
| 139 | rm -f *.o *~ example minigzip libz.a libz.so* foo.gz so_locations \ | 139 | rm -f *.o *~ example minigzip libz.a libz.so* foo.gz so_locations \ |
| 140 | _match.s maketree | 140 | _match.s maketree contrib/infback9/*.o |
| 141 | 141 | ||
| 142 | maintainer-clean: distclean | 142 | maintainer-clean: distclean |
| 143 | distclean: clean | 143 | distclean: clean |
| @@ -1,6 +1,6 @@ | |||
| 1 | ZLIB DATA COMPRESSION LIBRARY | 1 | ZLIB DATA COMPRESSION LIBRARY |
| 2 | 2 | ||
| 3 | zlib 1.2.0.5 is a general purpose data compression library. All the code is | 3 | zlib 1.2.0.6 is a general purpose data compression library. All the code is |
| 4 | thread safe. The data format used by the zlib library is described by RFCs | 4 | thread 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 |
| 6 | http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) | 6 | http://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 | |||
| 34 | issue of Dr. Dobb's Journal; a copy of the article is available in | 34 | issue of Dr. Dobb's Journal; a copy of the article is available in |
| 35 | http://dogma.net/markn/articles/zlibtool/zlibtool.htm | 35 | http://dogma.net/markn/articles/zlibtool/zlibtool.htm |
| 36 | 36 | ||
| 37 | The changes made in version 1.2.0.5 are documented in the file ChangeLog. | 37 | The changes made in version 1.2.0.6 are documented in the file ChangeLog. |
| 38 | 38 | ||
| 39 | Unsupported third party contributions are provided in directory "contrib". | 39 | Unsupported third party contributions are provided in directory "contrib". |
| 40 | 40 | ||
diff --git a/contrib/README.contrib b/contrib/README.contrib index b1de0d1..96f2c43 100644 --- a/contrib/README.contrib +++ b/contrib/README.contrib | |||
| @@ -20,7 +20,6 @@ delphi/ by Cosmin Truta <cosmint@cs.ubbcluj.ro> | |||
| 20 | 20 | ||
| 21 | infback9/ by Mark Adler <madler@alumni.caltech.edu> | 21 | infback9/ by Mark Adler <madler@alumni.caltech.edu> |
| 22 | Unsupported diffs to infback to decode the deflate64 format | 22 | Unsupported diffs to infback to decode the deflate64 format |
| 23 | (Worse than that, it's not even tested) | ||
| 24 | 23 | ||
| 25 | inflate86/ by Chris Anderson <christop@charm.net> | 24 | inflate86/ by Chris Anderson <christop@charm.net> |
| 26 | Tuned x86 gcc asm code to replace inflate_fast() | 25 | Tuned x86 gcc asm code to replace inflate_fast() |
diff --git a/contrib/infback9/infback9.c b/contrib/infback9/infback9.c new file mode 100644 index 0000000..fb6acb4 --- /dev/null +++ b/contrib/infback9/infback9.c | |||
| @@ -0,0 +1,605 @@ | |||
| 1 | /* infback9.c -- inflate deflate64 data using a call-back interface | ||
| 2 | * Copyright (C) 1995-2003 Mark Adler | ||
| 3 | * For conditions of distribution and use, see copyright notice in zlib.h | ||
| 4 | */ | ||
| 5 | |||
| 6 | #include "zutil.h" | ||
| 7 | #include "infback9.h" | ||
| 8 | #include "inftree9.h" | ||
| 9 | #include "inflate9.h" | ||
| 10 | |||
| 11 | #define WSIZE 65536UL | ||
| 12 | |||
| 13 | /* | ||
| 14 | strm provides memory allocation functions in zalloc and zfree, or | ||
| 15 | Z_NULL to use the library memory allocation functions. | ||
| 16 | |||
| 17 | window is a user-supplied window and output buffer that is 64K bytes. | ||
| 18 | */ | ||
| 19 | int ZEXPORT inflateBack9Init_(strm, window, version, stream_size) | ||
| 20 | z_stream FAR *strm; | ||
| 21 | unsigned char FAR *window; | ||
| 22 | const char *version; | ||
| 23 | int stream_size; | ||
| 24 | { | ||
| 25 | struct inflate_state FAR *state; | ||
| 26 | |||
| 27 | if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || | ||
| 28 | stream_size != (int)(sizeof(z_stream))) | ||
| 29 | return Z_VERSION_ERROR; | ||
| 30 | if (strm == Z_NULL || window == Z_NULL) | ||
| 31 | return Z_STREAM_ERROR; | ||
| 32 | strm->msg = Z_NULL; /* in case we return an error */ | ||
| 33 | if (strm->zalloc == (alloc_func)0) { | ||
| 34 | strm->zalloc = zcalloc; | ||
| 35 | strm->opaque = (voidpf)0; | ||
| 36 | } | ||
| 37 | if (strm->zfree == (free_func)0) strm->zfree = zcfree; | ||
| 38 | state = (struct inflate_state FAR *)ZALLOC(strm, 1, | ||
| 39 | sizeof(struct inflate_state)); | ||
| 40 | if (state == Z_NULL) return Z_MEM_ERROR; | ||
| 41 | Tracev((stderr, "inflate: allocated\n")); | ||
| 42 | strm->state = (voidpf)state; | ||
| 43 | state->window = window; | ||
| 44 | return Z_OK; | ||
| 45 | } | ||
| 46 | |||
| 47 | /* | ||
| 48 | Build and output length and distance decoding tables for fixed code | ||
| 49 | decoding. | ||
| 50 | */ | ||
| 51 | #ifdef MAKEFIXED | ||
| 52 | #include <stdio.h> | ||
| 53 | |||
| 54 | void makefixed9(void) | ||
| 55 | { | ||
| 56 | unsigned sym, bits, low, size; | ||
| 57 | code *next, *lenfix, *distfix; | ||
| 58 | struct inflate_state state; | ||
| 59 | code fixed[544]; | ||
| 60 | |||
| 61 | /* literal/length table */ | ||
| 62 | sym = 0; | ||
| 63 | while (sym < 144) state.lens[sym++] = 8; | ||
| 64 | while (sym < 256) state.lens[sym++] = 9; | ||
| 65 | while (sym < 280) state.lens[sym++] = 7; | ||
| 66 | while (sym < 288) state.lens[sym++] = 8; | ||
| 67 | next = fixed; | ||
| 68 | lenfix = next; | ||
| 69 | bits = 9; | ||
| 70 | inflate_table9(LENS, state.lens, 288, &(next), &(bits), state.work); | ||
| 71 | |||
| 72 | /* distance table */ | ||
| 73 | sym = 0; | ||
| 74 | while (sym < 32) state.lens[sym++] = 5; | ||
| 75 | distfix = next; | ||
| 76 | bits = 5; | ||
| 77 | inflate_table9(DISTS, state.lens, 32, &(next), &(bits), state.work); | ||
| 78 | |||
| 79 | /* write tables */ | ||
| 80 | puts(" /* inffix9.h -- table for decoding deflate64 fixed codes"); | ||
| 81 | puts(" * Generated automatically by makefixed9()."); | ||
| 82 | puts(" */"); | ||
| 83 | puts(""); | ||
| 84 | puts(" /* WARNING: this file should *not* be used by applications."); | ||
| 85 | puts(" It is part of the implementation of this library and is"); | ||
| 86 | puts(" subject to change. Applications should only use zlib.h."); | ||
| 87 | puts(" */"); | ||
| 88 | puts(""); | ||
| 89 | size = 1U << 9; | ||
| 90 | printf(" static const code lenfix[%u] = {", size); | ||
| 91 | low = 0; | ||
| 92 | for (;;) { | ||
| 93 | if ((low % 6) == 0) printf("\n "); | ||
| 94 | printf("{%u,%u,%d}", lenfix[low].op, lenfix[low].bits, | ||
| 95 | lenfix[low].val); | ||
| 96 | if (++low == size) break; | ||
| 97 | putchar(','); | ||
| 98 | } | ||
| 99 | puts("\n };"); | ||
| 100 | size = 1U << 5; | ||
| 101 | printf("\n static const code distfix[%u] = {", size); | ||
| 102 | low = 0; | ||
| 103 | for (;;) { | ||
| 104 | if ((low % 5) == 0) printf("\n "); | ||
| 105 | printf("{%u,%u,%d}", distfix[low].op, distfix[low].bits, | ||
| 106 | distfix[low].val); | ||
| 107 | if (++low == size) break; | ||
| 108 | putchar(','); | ||
| 109 | } | ||
| 110 | puts("\n };"); | ||
| 111 | } | ||
| 112 | #endif /* MAKEFIXED */ | ||
| 113 | |||
| 114 | /* Macros for inflateBack(): */ | ||
| 115 | |||
| 116 | /* Clear the input bit accumulator */ | ||
| 117 | #define INITBITS() \ | ||
| 118 | do { \ | ||
| 119 | hold = 0; \ | ||
| 120 | bits = 0; \ | ||
| 121 | } while (0) | ||
| 122 | |||
| 123 | /* Assure that some input is available. If input is requested, but denied, | ||
| 124 | then return a Z_BUF_ERROR from inflateBack(). */ | ||
| 125 | #define PULL() \ | ||
| 126 | do { \ | ||
| 127 | if (have == 0) { \ | ||
| 128 | have = in(in_desc, &next); \ | ||
| 129 | if (have == 0) { \ | ||
| 130 | next = Z_NULL; \ | ||
| 131 | ret = Z_BUF_ERROR; \ | ||
| 132 | goto inf_leave; \ | ||
| 133 | } \ | ||
| 134 | } \ | ||
| 135 | } while (0) | ||
| 136 | |||
| 137 | /* Get a byte of input into the bit accumulator, or return from inflateBack() | ||
| 138 | with an error if there is no input available. */ | ||
| 139 | #define PULLBYTE() \ | ||
| 140 | do { \ | ||
| 141 | PULL(); \ | ||
| 142 | have--; \ | ||
| 143 | hold += (unsigned long)(*next++) << bits; \ | ||
| 144 | bits += 8; \ | ||
| 145 | } while (0) | ||
| 146 | |||
| 147 | /* Assure that there are at least n bits in the bit accumulator. If there is | ||
| 148 | not enough available input to do that, then return from inflateBack() with | ||
| 149 | an error. */ | ||
| 150 | #define NEEDBITS(n) \ | ||
| 151 | do { \ | ||
| 152 | while (bits < (unsigned)(n)) \ | ||
| 153 | PULLBYTE(); \ | ||
| 154 | } while (0) | ||
| 155 | |||
| 156 | /* Return the low n bits of the bit accumulator (n <= 16) */ | ||
| 157 | #define BITS(n) \ | ||
| 158 | ((unsigned)hold & ((1U << (n)) - 1)) | ||
| 159 | |||
| 160 | /* Remove n bits from the bit accumulator */ | ||
| 161 | #define DROPBITS(n) \ | ||
| 162 | do { \ | ||
| 163 | hold >>= (n); \ | ||
| 164 | bits -= (unsigned)(n); \ | ||
| 165 | } while (0) | ||
| 166 | |||
| 167 | /* Remove zero to seven bits as needed to go to a byte boundary */ | ||
| 168 | #define BYTEBITS() \ | ||
| 169 | do { \ | ||
| 170 | hold >>= bits & 7; \ | ||
| 171 | bits -= bits & 7; \ | ||
| 172 | } while (0) | ||
| 173 | |||
| 174 | /* Assure that some output space is available, by writing out the window | ||
| 175 | if it's full. If the write fails, return from inflateBack() with a | ||
| 176 | Z_BUF_ERROR. */ | ||
| 177 | #define ROOM() \ | ||
| 178 | do { \ | ||
| 179 | if (left == 0) { \ | ||
| 180 | put = window; \ | ||
| 181 | left = WSIZE; \ | ||
| 182 | wrap = 1; \ | ||
| 183 | if (out(out_desc, put, (unsigned)left)) { \ | ||
| 184 | ret = Z_BUF_ERROR; \ | ||
| 185 | goto inf_leave; \ | ||
| 186 | } \ | ||
| 187 | } \ | ||
| 188 | } while (0) | ||
| 189 | |||
| 190 | /* | ||
| 191 | strm provides the memory allocation functions and window buffer on input, | ||
| 192 | and provides information on the unused input on return. For Z_DATA_ERROR | ||
| 193 | returns, strm will also provide an error message. | ||
| 194 | |||
| 195 | in() and out() are the call-back input and output functions. When | ||
| 196 | inflateBack() needs more input, it calls in(). When inflateBack() has | ||
| 197 | filled the window with output, or when it completes with data in the | ||
| 198 | window, it calls out() to write out the data. The application must not | ||
| 199 | change the provided input until in() is called again or inflateBack() | ||
| 200 | returns. The application must not change the window/output buffer until | ||
| 201 | inflateBack() returns. | ||
| 202 | |||
| 203 | in() and out() are called with a descriptor parameter provided in the | ||
| 204 | inflateBack() call. This parameter can be a structure that provides the | ||
| 205 | information required to do the read or write, as well as accumulated | ||
| 206 | information on the input and output such as totals and check values. | ||
| 207 | |||
| 208 | in() should return zero on failure. out() should return non-zero on | ||
| 209 | failure. If either in() or out() fails, than inflateBack() returns a | ||
| 210 | Z_BUF_ERROR. strm->next_in can be checked for Z_NULL to see whether it | ||
| 211 | was in() or out() that caused in the error. Otherwise, inflateBack() | ||
| 212 | returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format | ||
| 213 | error, or Z_MEM_ERROR if it could not allocate memory for the state. | ||
| 214 | inflateBack() can also return Z_STREAM_ERROR if the input parameters | ||
| 215 | are not correct, i.e. strm is Z_NULL or the state was not initialized. | ||
| 216 | */ | ||
| 217 | int ZEXPORT inflateBack9(strm, in, in_desc, out, out_desc) | ||
| 218 | z_stream FAR *strm; | ||
| 219 | in_func in; | ||
| 220 | void FAR *in_desc; | ||
| 221 | out_func out; | ||
| 222 | void FAR *out_desc; | ||
| 223 | { | ||
| 224 | struct inflate_state FAR *state; | ||
| 225 | unsigned char FAR *next; /* next input */ | ||
| 226 | unsigned char FAR *put; /* next output */ | ||
| 227 | unsigned have; /* available input */ | ||
| 228 | unsigned long left; /* available output */ | ||
| 229 | inflate_mode mode; /* current inflate mode */ | ||
| 230 | int lastblock; /* true if processing last block */ | ||
| 231 | int wrap; /* true if the window has wrapped */ | ||
| 232 | unsigned long write; /* window write index */ | ||
| 233 | unsigned char FAR *window; /* allocated sliding window, if needed */ | ||
| 234 | unsigned long hold; /* bit buffer */ | ||
| 235 | unsigned bits; /* bits in bit buffer */ | ||
| 236 | unsigned extra; /* extra bits needed */ | ||
| 237 | unsigned long length; /* literal or length of data to copy */ | ||
| 238 | unsigned long offset; /* distance back to copy string from */ | ||
| 239 | unsigned long copy; /* number of stored or match bytes to copy */ | ||
| 240 | unsigned char FAR *from; /* where to copy match bytes from */ | ||
| 241 | code const FAR *lencode; /* starting table for length/literal codes */ | ||
| 242 | code const FAR *distcode; /* starting table for distance codes */ | ||
| 243 | unsigned lenbits; /* index bits for lencode */ | ||
| 244 | unsigned distbits; /* index bits for distcode */ | ||
| 245 | code this; /* current decoding table entry */ | ||
| 246 | code last; /* parent table entry */ | ||
| 247 | unsigned len; /* length to copy for repeats, bits to drop */ | ||
| 248 | int ret; /* return code */ | ||
| 249 | static const unsigned short order[19] = /* permutation of code lengths */ | ||
| 250 | {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; | ||
| 251 | #include "inffix9.h" | ||
| 252 | |||
| 253 | /* Check that the strm exists and that the state was initialized */ | ||
| 254 | if (strm == Z_NULL || strm->state == Z_NULL) | ||
| 255 | return Z_STREAM_ERROR; | ||
| 256 | state = (struct inflate_state FAR *)strm->state; | ||
| 257 | |||
| 258 | /* Reset the state */ | ||
| 259 | strm->msg = Z_NULL; | ||
| 260 | mode = TYPE; | ||
| 261 | lastblock = 0; | ||
| 262 | write = 0; | ||
| 263 | wrap = 0; | ||
| 264 | window = state->window; | ||
| 265 | next = strm->next_in; | ||
| 266 | have = next != Z_NULL ? strm->avail_in : 0; | ||
| 267 | hold = 0; | ||
| 268 | bits = 0; | ||
| 269 | put = window; | ||
| 270 | left = WSIZE; | ||
| 271 | lencode = Z_NULL; | ||
| 272 | distcode = Z_NULL; | ||
| 273 | |||
| 274 | /* Inflate until end of block marked as last */ | ||
| 275 | for (;;) | ||
| 276 | switch (mode) { | ||
| 277 | case TYPE: | ||
| 278 | /* determine and dispatch block type */ | ||
| 279 | if (lastblock) { | ||
| 280 | BYTEBITS(); | ||
| 281 | mode = DONE; | ||
| 282 | break; | ||
| 283 | } | ||
| 284 | NEEDBITS(3); | ||
| 285 | lastblock = BITS(1); | ||
| 286 | DROPBITS(1); | ||
| 287 | switch (BITS(2)) { | ||
| 288 | case 0: /* stored block */ | ||
| 289 | Tracev((stderr, "inflate: stored block%s\n", | ||
| 290 | lastblock ? " (last)" : "")); | ||
| 291 | mode = STORED; | ||
| 292 | break; | ||
| 293 | case 1: /* fixed block */ | ||
| 294 | lencode = lenfix; | ||
| 295 | lenbits = 9; | ||
| 296 | distcode = distfix; | ||
| 297 | distbits = 5; | ||
| 298 | Tracev((stderr, "inflate: fixed codes block%s\n", | ||
| 299 | lastblock ? " (last)" : "")); | ||
| 300 | mode = LEN; /* decode codes */ | ||
| 301 | break; | ||
| 302 | case 2: /* dynamic block */ | ||
| 303 | Tracev((stderr, "inflate: dynamic codes block%s\n", | ||
| 304 | lastblock ? " (last)" : "")); | ||
| 305 | mode = TABLE; | ||
| 306 | break; | ||
| 307 | case 3: | ||
| 308 | strm->msg = (char *)"invalid block type"; | ||
| 309 | mode = BAD; | ||
| 310 | } | ||
| 311 | DROPBITS(2); | ||
| 312 | break; | ||
| 313 | |||
| 314 | case STORED: | ||
| 315 | /* get and verify stored block length */ | ||
| 316 | BYTEBITS(); /* go to byte boundary */ | ||
| 317 | NEEDBITS(32); | ||
| 318 | if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { | ||
| 319 | strm->msg = (char *)"invalid stored block lengths"; | ||
| 320 | mode = BAD; | ||
| 321 | break; | ||
| 322 | } | ||
| 323 | length = (unsigned)hold & 0xffff; | ||
| 324 | Tracev((stderr, "inflate: stored length %u\n", | ||
| 325 | length)); | ||
| 326 | INITBITS(); | ||
| 327 | |||
| 328 | /* copy stored block from input to output */ | ||
| 329 | while (length != 0) { | ||
| 330 | copy = length; | ||
| 331 | PULL(); | ||
| 332 | ROOM(); | ||
| 333 | if (copy > have) copy = have; | ||
| 334 | if (copy > left) copy = left; | ||
| 335 | zmemcpy(put, next, copy); | ||
| 336 | have -= copy; | ||
| 337 | next += copy; | ||
| 338 | left -= copy; | ||
| 339 | put += copy; | ||
| 340 | length -= copy; | ||
| 341 | } | ||
| 342 | Tracev((stderr, "inflate: stored end\n")); | ||
| 343 | mode = TYPE; | ||
| 344 | break; | ||
| 345 | |||
| 346 | case TABLE: | ||
| 347 | /* get dynamic table entries descriptor */ | ||
| 348 | NEEDBITS(14); | ||
| 349 | state->nlen = BITS(5) + 257; | ||
| 350 | DROPBITS(5); | ||
| 351 | state->ndist = BITS(5) + 1; | ||
| 352 | DROPBITS(5); | ||
| 353 | state->ncode = BITS(4) + 4; | ||
| 354 | DROPBITS(4); | ||
| 355 | if (state->nlen > 286) { | ||
| 356 | strm->msg = (char *)"too many length symbols"; | ||
| 357 | mode = BAD; | ||
| 358 | break; | ||
| 359 | } | ||
| 360 | Tracev((stderr, "inflate: table sizes ok\n")); | ||
| 361 | |||
| 362 | /* get code length code lengths (not a typo) */ | ||
| 363 | state->have = 0; | ||
| 364 | while (state->have < state->ncode) { | ||
| 365 | NEEDBITS(3); | ||
| 366 | state->lens[order[state->have++]] = (unsigned short)BITS(3); | ||
| 367 | DROPBITS(3); | ||
| 368 | } | ||
| 369 | while (state->have < 19) | ||
| 370 | state->lens[order[state->have++]] = 0; | ||
| 371 | state->next = state->codes; | ||
| 372 | lencode = (code const FAR *)(state->next); | ||
| 373 | lenbits = 7; | ||
| 374 | ret = inflate_table9(CODES, state->lens, 19, &(state->next), | ||
| 375 | &(lenbits), state->work); | ||
| 376 | if (ret) { | ||
| 377 | strm->msg = (char *)"invalid code lengths set"; | ||
| 378 | mode = BAD; | ||
| 379 | break; | ||
| 380 | } | ||
| 381 | Tracev((stderr, "inflate: code lengths ok\n")); | ||
| 382 | |||
| 383 | /* get length and distance code code lengths */ | ||
| 384 | state->have = 0; | ||
| 385 | while (state->have < state->nlen + state->ndist) { | ||
| 386 | for (;;) { | ||
| 387 | this = lencode[BITS(lenbits)]; | ||
| 388 | if ((unsigned)(this.bits) <= bits) break; | ||
| 389 | PULLBYTE(); | ||
| 390 | } | ||
| 391 | if (this.val < 16) { | ||
| 392 | NEEDBITS(this.bits); | ||
| 393 | DROPBITS(this.bits); | ||
| 394 | state->lens[state->have++] = this.val; | ||
| 395 | } | ||
| 396 | else { | ||
| 397 | if (this.val == 16) { | ||
| 398 | NEEDBITS(this.bits + 2); | ||
| 399 | DROPBITS(this.bits); | ||
| 400 | if (state->have == 0) { | ||
| 401 | strm->msg = (char *)"invalid bit length repeat"; | ||
| 402 | mode = BAD; | ||
| 403 | break; | ||
| 404 | } | ||
| 405 | len = (unsigned)(state->lens[state->have - 1]); | ||
| 406 | copy = 3 + BITS(2); | ||
| 407 | DROPBITS(2); | ||
| 408 | } | ||
| 409 | else if (this.val == 17) { | ||
| 410 | NEEDBITS(this.bits + 3); | ||
| 411 | DROPBITS(this.bits); | ||
| 412 | len = 0; | ||
| 413 | copy = 3 + BITS(3); | ||
| 414 | DROPBITS(3); | ||
| 415 | } | ||
| 416 | else { | ||
| 417 | NEEDBITS(this.bits + 7); | ||
| 418 | DROPBITS(this.bits); | ||
| 419 | len = 0; | ||
| 420 | copy = 11 + BITS(7); | ||
| 421 | DROPBITS(7); | ||
| 422 | } | ||
| 423 | if (state->have + copy > state->nlen + state->ndist) { | ||
| 424 | strm->msg = (char *)"invalid bit length repeat"; | ||
| 425 | mode = BAD; | ||
| 426 | break; | ||
| 427 | } | ||
| 428 | while (copy--) | ||
| 429 | state->lens[state->have++] = (unsigned short)len; | ||
| 430 | } | ||
| 431 | } | ||
| 432 | |||
| 433 | /* build code tables */ | ||
| 434 | state->next = state->codes; | ||
| 435 | lencode = (code const FAR *)(state->next); | ||
| 436 | lenbits = 9; | ||
| 437 | ret = inflate_table9(LENS, state->lens, state->nlen, | ||
| 438 | &(state->next), &(lenbits), state->work); | ||
| 439 | if (ret) { | ||
| 440 | strm->msg = (char *)"invalid literal/lengths set"; | ||
| 441 | mode = BAD; | ||
| 442 | break; | ||
| 443 | } | ||
| 444 | distcode = (code const FAR *)(state->next); | ||
| 445 | distbits = 6; | ||
| 446 | ret = inflate_table9(DISTS, state->lens + state->nlen, | ||
| 447 | state->ndist, &(state->next), &(distbits), | ||
| 448 | state->work); | ||
| 449 | if (ret) { | ||
| 450 | strm->msg = (char *)"invalid distances set"; | ||
| 451 | mode = BAD; | ||
| 452 | break; | ||
| 453 | } | ||
| 454 | Tracev((stderr, "inflate: codes ok\n")); | ||
| 455 | mode = LEN; | ||
| 456 | |||
| 457 | case LEN: | ||
| 458 | /* get a literal, length, or end-of-block code */ | ||
| 459 | for (;;) { | ||
| 460 | this = lencode[BITS(lenbits)]; | ||
| 461 | if ((unsigned)(this.bits) <= bits) break; | ||
| 462 | PULLBYTE(); | ||
| 463 | } | ||
| 464 | if (this.op && (this.op & 0xf0) == 0) { | ||
| 465 | last = this; | ||
| 466 | for (;;) { | ||
| 467 | this = lencode[last.val + | ||
| 468 | (BITS(last.bits + last.op) >> last.bits)]; | ||
| 469 | if ((unsigned)(last.bits + this.bits) <= bits) break; | ||
| 470 | PULLBYTE(); | ||
| 471 | } | ||
| 472 | DROPBITS(last.bits); | ||
| 473 | } | ||
| 474 | DROPBITS(this.bits); | ||
| 475 | length = (unsigned)this.val; | ||
| 476 | |||
| 477 | /* process literal */ | ||
| 478 | if (this.op == 0) { | ||
| 479 | Tracevv((stderr, this.val >= 0x20 && this.val < 0x7f ? | ||
| 480 | "inflate: literal '%c'\n" : | ||
| 481 | "inflate: literal 0x%02x\n", this.val)); | ||
| 482 | ROOM(); | ||
| 483 | *put++ = (unsigned char)(length); | ||
| 484 | left--; | ||
| 485 | mode = LEN; | ||
| 486 | break; | ||
| 487 | } | ||
| 488 | |||
| 489 | /* process end of block */ | ||
| 490 | if (this.op & 32) { | ||
| 491 | Tracevv((stderr, "inflate: end of block\n")); | ||
| 492 | mode = TYPE; | ||
| 493 | break; | ||
| 494 | } | ||
| 495 | |||
| 496 | /* invalid code */ | ||
| 497 | if (this.op & 64) { | ||
| 498 | strm->msg = (char *)"invalid literal/length code"; | ||
| 499 | mode = BAD; | ||
| 500 | break; | ||
| 501 | } | ||
| 502 | |||
| 503 | /* length code -- get extra bits, if any */ | ||
| 504 | extra = (unsigned)(this.op) & 31; | ||
| 505 | if (extra != 0) { | ||
| 506 | NEEDBITS(extra); | ||
| 507 | length += BITS(extra); | ||
| 508 | DROPBITS(extra); | ||
| 509 | } | ||
| 510 | Tracevv((stderr, "inflate: length %u\n", length)); | ||
| 511 | |||
| 512 | /* get distance code */ | ||
| 513 | for (;;) { | ||
| 514 | this = distcode[BITS(distbits)]; | ||
| 515 | if ((unsigned)(this.bits) <= bits) break; | ||
| 516 | PULLBYTE(); | ||
| 517 | } | ||
| 518 | if ((this.op & 0xf0) == 0) { | ||
| 519 | last = this; | ||
| 520 | for (;;) { | ||
| 521 | this = distcode[last.val + | ||
| 522 | (BITS(last.bits + last.op) >> last.bits)]; | ||
| 523 | if ((unsigned)(last.bits + this.bits) <= bits) break; | ||
| 524 | PULLBYTE(); | ||
| 525 | } | ||
| 526 | DROPBITS(last.bits); | ||
| 527 | } | ||
| 528 | DROPBITS(this.bits); | ||
| 529 | if (this.op & 64) { | ||
| 530 | strm->msg = (char *)"invalid distance code"; | ||
| 531 | mode = BAD; | ||
| 532 | break; | ||
| 533 | } | ||
| 534 | offset = (unsigned)this.val; | ||
| 535 | |||
| 536 | /* get distance extra bits, if any */ | ||
| 537 | extra = (unsigned)(this.op) & 15; | ||
| 538 | if (extra != 0) { | ||
| 539 | NEEDBITS(extra); | ||
| 540 | offset += BITS(extra); | ||
| 541 | DROPBITS(extra); | ||
| 542 | } | ||
| 543 | if (offset > WSIZE - (wrap ? 0: left)) { | ||
| 544 | strm->msg = (char *)"invalid distance too far back"; | ||
| 545 | mode = BAD; | ||
| 546 | break; | ||
| 547 | } | ||
| 548 | Tracevv((stderr, "inflate: distance %u\n", offset)); | ||
| 549 | |||
| 550 | /* copy match from window to output */ | ||
| 551 | do { | ||
| 552 | ROOM(); | ||
| 553 | copy = WSIZE - offset; | ||
| 554 | if (copy < left) { | ||
| 555 | from = put + copy; | ||
| 556 | copy = left - copy; | ||
| 557 | } | ||
| 558 | else { | ||
| 559 | from = put - offset; | ||
| 560 | copy = left; | ||
| 561 | } | ||
| 562 | if (copy > length) copy = length; | ||
| 563 | length -= copy; | ||
| 564 | left -= copy; | ||
| 565 | do { | ||
| 566 | *put++ = *from++; | ||
| 567 | } while (--copy); | ||
| 568 | } while (length != 0); | ||
| 569 | break; | ||
| 570 | |||
| 571 | case DONE: | ||
| 572 | /* inflate stream terminated properly -- write leftover output */ | ||
| 573 | ret = Z_STREAM_END; | ||
| 574 | if (left < WSIZE) { | ||
| 575 | if (out(out_desc, window, (unsigned)(WSIZE - left))) | ||
| 576 | ret = Z_BUF_ERROR; | ||
| 577 | } | ||
| 578 | goto inf_leave; | ||
| 579 | |||
| 580 | case BAD: | ||
| 581 | ret = Z_DATA_ERROR; | ||
| 582 | goto inf_leave; | ||
| 583 | |||
| 584 | default: /* can't happen, but makes compilers happy */ | ||
| 585 | ret = Z_STREAM_ERROR; | ||
| 586 | goto inf_leave; | ||
| 587 | } | ||
| 588 | |||
| 589 | /* Return unused input */ | ||
| 590 | inf_leave: | ||
| 591 | strm->next_in = next; | ||
| 592 | strm->avail_in = have; | ||
| 593 | return ret; | ||
| 594 | } | ||
| 595 | |||
| 596 | int ZEXPORT inflateBack9End(strm) | ||
| 597 | z_stream FAR *strm; | ||
| 598 | { | ||
| 599 | if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) | ||
| 600 | return Z_STREAM_ERROR; | ||
| 601 | ZFREE(strm, strm->state); | ||
| 602 | strm->state = Z_NULL; | ||
| 603 | Tracev((stderr, "inflate: end\n")); | ||
| 604 | return Z_OK; | ||
| 605 | } | ||
diff --git a/contrib/infback9/infback9.diff b/contrib/infback9/infback9.diff deleted file mode 100644 index cbe2e49..0000000 --- a/contrib/infback9/infback9.diff +++ /dev/null | |||
| @@ -1,427 +0,0 @@ | |||
| 1 | *** infback.c Mon Aug 11 16:48:06 2003 | ||
| 2 | --- infback9.c Mon Sep 8 21:22:46 2003 | ||
| 3 | *************** | ||
| 4 | *** 1,19 **** | ||
| 5 | ! /* infback.c -- inflate using a call-back interface | ||
| 6 | * Copyright (C) 1995-2003 Mark Adler | ||
| 7 | * For conditions of distribution and use, see copyright notice in zlib.h | ||
| 8 | */ | ||
| 9 | |||
| 10 | - /* | ||
| 11 | - This code is largely copied from inflate.c. Normally either infback.o or | ||
| 12 | - inflate.o would be linked into an application--not both. The interface | ||
| 13 | - with inffast.c is retained so that optimized assembler-coded versions of | ||
| 14 | - inflate_fast() can be used with either inflate.c or infback.c. | ||
| 15 | - */ | ||
| 16 | - | ||
| 17 | #include "zutil.h" | ||
| 18 | ! #include "inftrees.h" | ||
| 19 | #include "inflate.h" | ||
| 20 | - #include "inffast.h" | ||
| 21 | |||
| 22 | /* function prototypes */ | ||
| 23 | local void fixedtables OF((struct inflate_state FAR *state)); | ||
| 24 | --- 1,12 ---- | ||
| 25 | ! /* infback9.c -- inflate deflate64 data using a call-back interface | ||
| 26 | * Copyright (C) 1995-2003 Mark Adler | ||
| 27 | * For conditions of distribution and use, see copyright notice in zlib.h | ||
| 28 | */ | ||
| 29 | |||
| 30 | #include "zutil.h" | ||
| 31 | ! #include "infback9.h" | ||
| 32 | ! #include "inftree9.h" | ||
| 33 | #include "inflate.h" | ||
| 34 | |||
| 35 | /* function prototypes */ | ||
| 36 | local void fixedtables OF((struct inflate_state FAR *state)); | ||
| 37 | *************** | ||
| 38 | *** 22,33 **** | ||
| 39 | strm provides memory allocation functions in zalloc and zfree, or | ||
| 40 | Z_NULL to use the library memory allocation functions. | ||
| 41 | |||
| 42 | ! windowBits is in the range 8..15, and window is a user-supplied | ||
| 43 | ! window and output buffer that is 2**windowBits bytes. | ||
| 44 | */ | ||
| 45 | ! int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size) | ||
| 46 | z_stream FAR *strm; | ||
| 47 | - int windowBits; | ||
| 48 | unsigned char FAR *window; | ||
| 49 | const char *version; | ||
| 50 | int stream_size; | ||
| 51 | --- 15,24 ---- | ||
| 52 | strm provides memory allocation functions in zalloc and zfree, or | ||
| 53 | Z_NULL to use the library memory allocation functions. | ||
| 54 | |||
| 55 | ! window is a user-supplied window and output buffer that is 64K bytes. | ||
| 56 | */ | ||
| 57 | ! int ZEXPORT inflateBack9Init_(strm, window, version, stream_size) | ||
| 58 | z_stream FAR *strm; | ||
| 59 | unsigned char FAR *window; | ||
| 60 | const char *version; | ||
| 61 | int stream_size; | ||
| 62 | *************** | ||
| 63 | *** 37,44 **** | ||
| 64 | if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || | ||
| 65 | stream_size != (int)(sizeof(z_stream))) | ||
| 66 | return Z_VERSION_ERROR; | ||
| 67 | ! if (strm == Z_NULL || window == Z_NULL || | ||
| 68 | ! windowBits < 8 || windowBits > 15) | ||
| 69 | return Z_STREAM_ERROR; | ||
| 70 | strm->msg = Z_NULL; /* in case we return an error */ | ||
| 71 | if (strm->zalloc == (alloc_func)0) { | ||
| 72 | --- 28,34 ---- | ||
| 73 | if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || | ||
| 74 | stream_size != (int)(sizeof(z_stream))) | ||
| 75 | return Z_VERSION_ERROR; | ||
| 76 | ! if (strm == Z_NULL || window == Z_NULL) | ||
| 77 | return Z_STREAM_ERROR; | ||
| 78 | strm->msg = Z_NULL; /* in case we return an error */ | ||
| 79 | if (strm->zalloc == (alloc_func)0) { | ||
| 80 | *************** | ||
| 81 | *** 51,58 **** | ||
| 82 | if (state == Z_NULL) return Z_MEM_ERROR; | ||
| 83 | Tracev((stderr, "inflate: allocated\n")); | ||
| 84 | strm->state = (voidpf)state; | ||
| 85 | ! state->wbits = windowBits; | ||
| 86 | ! state->wsize = 1U << windowBits; | ||
| 87 | state->window = window; | ||
| 88 | state->write = 0; | ||
| 89 | state->whave = 0; | ||
| 90 | --- 41,48 ---- | ||
| 91 | if (state == Z_NULL) return Z_MEM_ERROR; | ||
| 92 | Tracev((stderr, "inflate: allocated\n")); | ||
| 93 | strm->state = (voidpf)state; | ||
| 94 | ! state->wbits = 16; | ||
| 95 | ! state->wsize = 1U << 16; | ||
| 96 | state->window = window; | ||
| 97 | state->write = 0; | ||
| 98 | state->whave = 0; | ||
| 99 | *************** | ||
| 100 | *** 91,110 **** | ||
| 101 | next = fixed; | ||
| 102 | lenfix = next; | ||
| 103 | bits = 9; | ||
| 104 | ! inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); | ||
| 105 | |||
| 106 | /* distance table */ | ||
| 107 | sym = 0; | ||
| 108 | while (sym < 32) state->lens[sym++] = 5; | ||
| 109 | distfix = next; | ||
| 110 | bits = 5; | ||
| 111 | ! inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); | ||
| 112 | |||
| 113 | /* do this just once */ | ||
| 114 | virgin = 0; | ||
| 115 | } | ||
| 116 | #else /* !BUILDFIXED */ | ||
| 117 | ! # include "inffixed.h" | ||
| 118 | #endif /* BUILDFIXED */ | ||
| 119 | state->lencode = lenfix; | ||
| 120 | state->lenbits = 9; | ||
| 121 | --- 81,100 ---- | ||
| 122 | next = fixed; | ||
| 123 | lenfix = next; | ||
| 124 | bits = 9; | ||
| 125 | ! inflate_table9(LENS, state->lens, 288, &(next), &(bits), state->work); | ||
| 126 | |||
| 127 | /* distance table */ | ||
| 128 | sym = 0; | ||
| 129 | while (sym < 32) state->lens[sym++] = 5; | ||
| 130 | distfix = next; | ||
| 131 | bits = 5; | ||
| 132 | ! inflate_table9(DISTS, state->lens, 32, &(next), &(bits), state->work); | ||
| 133 | |||
| 134 | /* do this just once */ | ||
| 135 | virgin = 0; | ||
| 136 | } | ||
| 137 | #else /* !BUILDFIXED */ | ||
| 138 | ! # include "inffix9.h" | ||
| 139 | #endif /* BUILDFIXED */ | ||
| 140 | state->lencode = lenfix; | ||
| 141 | state->lenbits = 9; | ||
| 142 | *************** | ||
| 143 | *** 114,141 **** | ||
| 144 | |||
| 145 | /* Macros for inflateBack(): */ | ||
| 146 | |||
| 147 | - /* Load returned state from inflate_fast() */ | ||
| 148 | - #define LOAD() \ | ||
| 149 | - do { \ | ||
| 150 | - put = strm->next_out; \ | ||
| 151 | - left = strm->avail_out; \ | ||
| 152 | - next = strm->next_in; \ | ||
| 153 | - have = strm->avail_in; \ | ||
| 154 | - hold = state->hold; \ | ||
| 155 | - bits = state->bits; \ | ||
| 156 | - } while (0) | ||
| 157 | - | ||
| 158 | - /* Set state from registers for inflate_fast() */ | ||
| 159 | - #define RESTORE() \ | ||
| 160 | - do { \ | ||
| 161 | - strm->next_out = put; \ | ||
| 162 | - strm->avail_out = left; \ | ||
| 163 | - strm->next_in = next; \ | ||
| 164 | - strm->avail_in = have; \ | ||
| 165 | - state->hold = hold; \ | ||
| 166 | - state->bits = bits; \ | ||
| 167 | - } while (0) | ||
| 168 | - | ||
| 169 | /* Clear the input bit accumulator */ | ||
| 170 | #define INITBITS() \ | ||
| 171 | do { \ | ||
| 172 | --- 104,109 ---- | ||
| 173 | *************** | ||
| 174 | *** 237,243 **** | ||
| 175 | inflateBack() can also return Z_STREAM_ERROR if the input parameters | ||
| 176 | are not correct, i.e. strm is Z_NULL or the state was not initialized. | ||
| 177 | */ | ||
| 178 | ! int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc) | ||
| 179 | z_stream FAR *strm; | ||
| 180 | in_func in; | ||
| 181 | void FAR *in_desc; | ||
| 182 | --- 205,211 ---- | ||
| 183 | inflateBack() can also return Z_STREAM_ERROR if the input parameters | ||
| 184 | are not correct, i.e. strm is Z_NULL or the state was not initialized. | ||
| 185 | */ | ||
| 186 | ! int ZEXPORT inflateBack9(strm, in, in_desc, out, out_desc) | ||
| 187 | z_stream FAR *strm; | ||
| 188 | in_func in; | ||
| 189 | void FAR *in_desc; | ||
| 190 | *************** | ||
| 191 | *** 354,366 **** | ||
| 192 | DROPBITS(5); | ||
| 193 | state->ncode = BITS(4) + 4; | ||
| 194 | DROPBITS(4); | ||
| 195 | ! #ifndef PKZIP_BUG_WORKAROUND | ||
| 196 | ! if (state->nlen > 286 || state->ndist > 30) { | ||
| 197 | ! strm->msg = (char *)"too many length or distance symbols"; | ||
| 198 | state->mode = BAD; | ||
| 199 | break; | ||
| 200 | } | ||
| 201 | - #endif | ||
| 202 | Tracev((stderr, "inflate: table sizes ok\n")); | ||
| 203 | |||
| 204 | /* get code length code lengths (not a typo) */ | ||
| 205 | --- 322,332 ---- | ||
| 206 | DROPBITS(5); | ||
| 207 | state->ncode = BITS(4) + 4; | ||
| 208 | DROPBITS(4); | ||
| 209 | ! if (state->nlen > 286) { | ||
| 210 | ! strm->msg = (char *)"too many length symbols"; | ||
| 211 | state->mode = BAD; | ||
| 212 | break; | ||
| 213 | } | ||
| 214 | Tracev((stderr, "inflate: table sizes ok\n")); | ||
| 215 | |||
| 216 | /* get code length code lengths (not a typo) */ | ||
| 217 | *************** | ||
| 218 | *** 375,381 **** | ||
| 219 | state->next = state->codes; | ||
| 220 | state->lencode = (code const FAR *)(state->next); | ||
| 221 | state->lenbits = 7; | ||
| 222 | ! ret = inflate_table(CODES, state->lens, 19, &(state->next), | ||
| 223 | &(state->lenbits), state->work); | ||
| 224 | if (ret) { | ||
| 225 | strm->msg = (char *)"invalid code lengths set"; | ||
| 226 | --- 341,347 ---- | ||
| 227 | state->next = state->codes; | ||
| 228 | state->lencode = (code const FAR *)(state->next); | ||
| 229 | state->lenbits = 7; | ||
| 230 | ! ret = inflate_table9(CODES, state->lens, 19, &(state->next), | ||
| 231 | &(state->lenbits), state->work); | ||
| 232 | if (ret) { | ||
| 233 | strm->msg = (char *)"invalid code lengths set"; | ||
| 234 | *************** | ||
| 235 | *** 438,445 **** | ||
| 236 | state->next = state->codes; | ||
| 237 | state->lencode = (code const FAR *)(state->next); | ||
| 238 | state->lenbits = 9; | ||
| 239 | ! ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), | ||
| 240 | ! &(state->lenbits), state->work); | ||
| 241 | if (ret) { | ||
| 242 | strm->msg = (char *)"invalid literal/lengths set"; | ||
| 243 | state->mode = BAD; | ||
| 244 | --- 404,411 ---- | ||
| 245 | state->next = state->codes; | ||
| 246 | state->lencode = (code const FAR *)(state->next); | ||
| 247 | state->lenbits = 9; | ||
| 248 | ! ret = inflate_table9(LENS, state->lens, state->nlen, | ||
| 249 | ! &(state->next), &(state->lenbits), state->work); | ||
| 250 | if (ret) { | ||
| 251 | strm->msg = (char *)"invalid literal/lengths set"; | ||
| 252 | state->mode = BAD; | ||
| 253 | *************** | ||
| 254 | *** 447,454 **** | ||
| 255 | } | ||
| 256 | state->distcode = (code const FAR *)(state->next); | ||
| 257 | state->distbits = 6; | ||
| 258 | ! ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, | ||
| 259 | ! &(state->next), &(state->distbits), state->work); | ||
| 260 | if (ret) { | ||
| 261 | strm->msg = (char *)"invalid distances set"; | ||
| 262 | state->mode = BAD; | ||
| 263 | --- 413,421 ---- | ||
| 264 | } | ||
| 265 | state->distcode = (code const FAR *)(state->next); | ||
| 266 | state->distbits = 6; | ||
| 267 | ! ret = inflate_table9(DISTS, state->lens + state->nlen, | ||
| 268 | ! state->ndist, &(state->next), &(state->distbits), | ||
| 269 | ! state->work); | ||
| 270 | if (ret) { | ||
| 271 | strm->msg = (char *)"invalid distances set"; | ||
| 272 | state->mode = BAD; | ||
| 273 | *************** | ||
| 274 | *** 458,473 **** | ||
| 275 | state->mode = LEN; | ||
| 276 | |||
| 277 | case LEN: | ||
| 278 | - /* use inflate_fast() if we have enough input and output */ | ||
| 279 | - if (have >= 6 && left >= 258) { | ||
| 280 | - RESTORE(); | ||
| 281 | - if (state->whave < state->wsize) | ||
| 282 | - state->whave = state->wsize - left; | ||
| 283 | - inflate_fast(strm, state->wsize); | ||
| 284 | - LOAD(); | ||
| 285 | - break; | ||
| 286 | - } | ||
| 287 | - | ||
| 288 | /* get a literal, length, or end-of-block code */ | ||
| 289 | for (;;) { | ||
| 290 | this = state->lencode[BITS(state->lenbits)]; | ||
| 291 | --- 425,430 ---- | ||
| 292 | *************** | ||
| 293 | *** 607,613 **** | ||
| 294 | return ret; | ||
| 295 | } | ||
| 296 | |||
| 297 | ! int ZEXPORT inflateBackEnd(strm) | ||
| 298 | z_stream FAR *strm; | ||
| 299 | { | ||
| 300 | if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) | ||
| 301 | --- 564,570 ---- | ||
| 302 | return ret; | ||
| 303 | } | ||
| 304 | |||
| 305 | ! int ZEXPORT inflateBack9End(strm) | ||
| 306 | z_stream FAR *strm; | ||
| 307 | { | ||
| 308 | if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) | ||
| 309 | *** inftrees.c Sun Sep 7 10:59:10 2003 | ||
| 310 | --- inftree9.c Mon Sep 8 20:54:36 2003 | ||
| 311 | *************** | ||
| 312 | *** 1,15 **** | ||
| 313 | ! /* inftrees.c -- generate Huffman trees for efficient decoding | ||
| 314 | * Copyright (C) 1995-2003 Mark Adler | ||
| 315 | * For conditions of distribution and use, see copyright notice in zlib.h | ||
| 316 | */ | ||
| 317 | |||
| 318 | #include "zutil.h" | ||
| 319 | ! #include "inftrees.h" | ||
| 320 | |||
| 321 | #define MAXBITS 15 | ||
| 322 | |||
| 323 | ! const char inflate_copyright[] = | ||
| 324 | ! " inflate 1.2.0.5 Copyright 1995-2003 Mark Adler "; | ||
| 325 | /* | ||
| 326 | If you use the zlib library in a product, an acknowledgment is welcome | ||
| 327 | in the documentation of your product. If for some reason you cannot | ||
| 328 | --- 1,15 ---- | ||
| 329 | ! /* inftree9.c -- generate Huffman trees for efficient decoding | ||
| 330 | * Copyright (C) 1995-2003 Mark Adler | ||
| 331 | * For conditions of distribution and use, see copyright notice in zlib.h | ||
| 332 | */ | ||
| 333 | |||
| 334 | #include "zutil.h" | ||
| 335 | ! #include "inftree9.h" | ||
| 336 | |||
| 337 | #define MAXBITS 15 | ||
| 338 | |||
| 339 | ! const char inflate9_copyright[] = | ||
| 340 | ! " inflate9 1.2.0.5 Copyright 1995-2003 Mark Adler "; | ||
| 341 | /* | ||
| 342 | If you use the zlib library in a product, an acknowledgment is welcome | ||
| 343 | in the documentation of your product. If for some reason you cannot | ||
| 344 | *************** | ||
| 345 | *** 29,35 **** | ||
| 346 | table index bits. It will differ if the request is greater than the | ||
| 347 | longest code or if it is less than the shortest code. | ||
| 348 | */ | ||
| 349 | ! int inflate_table(type, lens, codes, table, bits, work) | ||
| 350 | codetype type; | ||
| 351 | unsigned short FAR *lens; | ||
| 352 | unsigned codes; | ||
| 353 | --- 29,35 ---- | ||
| 354 | table index bits. It will differ if the request is greater than the | ||
| 355 | longest code or if it is less than the shortest code. | ||
| 356 | */ | ||
| 357 | ! int inflate_table9(type, lens, codes, table, bits, work) | ||
| 358 | codetype type; | ||
| 359 | unsigned short FAR *lens; | ||
| 360 | unsigned codes; | ||
| 361 | *************** | ||
| 362 | *** 59,76 **** | ||
| 363 | unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ | ||
| 364 | static const unsigned short lbase[31] = { /* Length codes 257..285 base */ | ||
| 365 | 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, | ||
| 366 | ! 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; | ||
| 367 | static const unsigned short lext[31] = { /* Length codes 257..285 extra */ | ||
| 368 | 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, | ||
| 369 | ! 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 192, 78}; | ||
| 370 | ! static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ | ||
| 371 | 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, | ||
| 372 | 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, | ||
| 373 | ! 8193, 12289, 16385, 24577, 0, 0}; | ||
| 374 | ! static const unsigned short dext[32] = { /* Distance codes 0..29 extra */ | ||
| 375 | 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, | ||
| 376 | 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, | ||
| 377 | ! 28, 28, 29, 29, 64, 64}; | ||
| 378 | |||
| 379 | /* | ||
| 380 | Process a set of code lengths to create a canonical Huffman code. The | ||
| 381 | --- 59,76 ---- | ||
| 382 | unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ | ||
| 383 | static const unsigned short lbase[31] = { /* Length codes 257..285 base */ | ||
| 384 | 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, | ||
| 385 | ! 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 3, 0, 0}; | ||
| 386 | static const unsigned short lext[31] = { /* Length codes 257..285 extra */ | ||
| 387 | 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, | ||
| 388 | ! 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 32, 192, 78}; | ||
| 389 | ! static const unsigned short dbase[32] = { /* Distance codes 0..31 base */ | ||
| 390 | 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, | ||
| 391 | 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, | ||
| 392 | ! 8193, 12289, 16385, 24577, 32769, 49153}; | ||
| 393 | ! static const unsigned short dext[32] = { /* Distance codes 0..31 extra */ | ||
| 394 | 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, | ||
| 395 | 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, | ||
| 396 | ! 28, 28, 29, 29, 30, 30}; | ||
| 397 | |||
| 398 | /* | ||
| 399 | Process a set of code lengths to create a canonical Huffman code. The | ||
| 400 | *** inftrees.h Sun Aug 10 15:15:50 2003 | ||
| 401 | --- inftree9.h Mon Sep 8 20:54:51 2003 | ||
| 402 | *************** | ||
| 403 | *** 1,4 **** | ||
| 404 | ! /* inftrees.h -- header to use inftrees.c | ||
| 405 | * Copyright (C) 1995-2003 Mark Adler | ||
| 406 | * For conditions of distribution and use, see copyright notice in zlib.h | ||
| 407 | */ | ||
| 408 | --- 1,4 ---- | ||
| 409 | ! /* inftree9.h -- header to use inftree9.c | ||
| 410 | * Copyright (C) 1995-2003 Mark Adler | ||
| 411 | * For conditions of distribution and use, see copyright notice in zlib.h | ||
| 412 | */ | ||
| 413 | *************** | ||
| 414 | *** 50,55 **** | ||
| 415 | DISTS | ||
| 416 | } codetype; | ||
| 417 | |||
| 418 | ! extern int inflate_table OF((codetype type, unsigned short FAR *lens, | ||
| 419 | unsigned codes, code FAR * FAR *table, | ||
| 420 | unsigned FAR *bits, unsigned short FAR *work)); | ||
| 421 | --- 50,55 ---- | ||
| 422 | DISTS | ||
| 423 | } codetype; | ||
| 424 | |||
| 425 | ! extern int inflate_table9 OF((codetype type, unsigned short FAR *lens, | ||
| 426 | unsigned codes, code FAR * FAR *table, | ||
| 427 | unsigned FAR *bits, unsigned short FAR *work)); | ||
diff --git a/contrib/infback9/infback9.h b/contrib/infback9/infback9.h index fb7c73e..10bf58c 100644 --- a/contrib/infback9/infback9.h +++ b/contrib/infback9/infback9.h | |||
| @@ -7,10 +7,13 @@ | |||
| 7 | * This header file and associated patches provide a decoder for PKWare's | 7 | * This header file and associated patches provide a decoder for PKWare's |
| 8 | * undocumented deflate64 compression method (method 9). Use with infback9.c, | 8 | * undocumented deflate64 compression method (method 9). Use with infback9.c, |
| 9 | * inftree9.h, inftree9.c, and inffix9.h. These patches are not supported. | 9 | * inftree9.h, inftree9.c, and inffix9.h. These patches are not supported. |
| 10 | * This code will almost certainly not work on 16-bit architectures. See the | 10 | * This should be compiled with zlib, since it uses zutil.h and zutil.o. |
| 11 | * This code has not yet been tested on 16-bit architectures. See the | ||
| 11 | * comments in zlib.h for inflateBack() usage. These functions are used | 12 | * comments in zlib.h for inflateBack() usage. These functions are used |
| 12 | * identically, except that there is no windowBits parameter, and a 64K | 13 | * identically, except that there is no windowBits parameter, and a 64K |
| 13 | * window must be provided. zlib.h must be included before this header file. | 14 | * window must be provided. Also if int's are 16 bits, then a zero for |
| 15 | * the third parameter of the "out" function actually means 65536UL. | ||
| 16 | * zlib.h must be included before this header file. | ||
| 14 | */ | 17 | */ |
| 15 | 18 | ||
| 16 | ZEXTERN int ZEXPORT inflateBack9 OF((z_stream FAR *strm, | 19 | ZEXTERN int ZEXPORT inflateBack9 OF((z_stream FAR *strm, |
diff --git a/contrib/infback9/inffix9.h b/contrib/infback9/inffix9.h index 8476588..ee5671d 100644 --- a/contrib/infback9/inffix9.h +++ b/contrib/infback9/inffix9.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* inffix9.h -- table for decoding fixed codes | 1 | /* inffix9.h -- table for decoding deflate64 fixed codes |
| 2 | * Generated automatically by makefixed(). | 2 | * Generated automatically by makefixed9(). |
| 3 | */ | 3 | */ |
| 4 | 4 | ||
| 5 | /* WARNING: this file should *not* be used by applications. | 5 | /* WARNING: this file should *not* be used by applications. |
| @@ -8,87 +8,100 @@ | |||
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | static const code lenfix[512] = { | 10 | static const code lenfix[512] = { |
| 11 | {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48}, | 11 | {96,7,0},{0,8,80},{0,8,16},{132,8,115},{130,7,31},{0,8,112}, |
| 12 | {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128}, | 12 | {0,8,48},{0,9,192},{128,7,10},{0,8,96},{0,8,32},{0,9,160}, |
| 13 | {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59}, | 13 | {0,8,0},{0,8,128},{0,8,64},{0,9,224},{128,7,6},{0,8,88}, |
| 14 | {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176}, | 14 | {0,8,24},{0,9,144},{131,7,59},{0,8,120},{0,8,56},{0,9,208}, |
| 15 | {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20}, | 15 | {129,7,17},{0,8,104},{0,8,40},{0,9,176},{0,8,8},{0,8,136}, |
| 16 | {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100}, | 16 | {0,8,72},{0,9,240},{128,7,4},{0,8,84},{0,8,20},{133,8,227}, |
| 17 | {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8}, | 17 | {131,7,43},{0,8,116},{0,8,52},{0,9,200},{129,7,13},{0,8,100}, |
| 18 | {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216}, | 18 | {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232}, |
| 19 | {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76}, | 19 | {128,7,8},{0,8,92},{0,8,28},{0,9,152},{132,7,83},{0,8,124}, |
| 20 | {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114}, | 20 | {0,8,60},{0,9,216},{130,7,23},{0,8,108},{0,8,44},{0,9,184}, |
| 21 | {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2}, | 21 | {0,8,12},{0,8,140},{0,8,76},{0,9,248},{128,7,3},{0,8,82}, |
| 22 | {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148}, | 22 | {0,8,18},{133,8,163},{131,7,35},{0,8,114},{0,8,50},{0,9,196}, |
| 23 | {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42}, | 23 | {129,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2},{0,8,130}, |
| 24 | {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86}, | 24 | {0,8,66},{0,9,228},{128,7,7},{0,8,90},{0,8,26},{0,9,148}, |
| 25 | {0,8,22},{192,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15}, | 25 | {132,7,67},{0,8,122},{0,8,58},{0,9,212},{130,7,19},{0,8,106}, |
| 26 | {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236}, | 26 | {0,8,42},{0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244}, |
| 27 | {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62}, | 27 | {128,7,5},{0,8,86},{0,8,22},{65,8,0},{131,7,51},{0,8,118}, |
| 28 | {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, | 28 | {0,8,54},{0,9,204},{129,7,15},{0,8,102},{0,8,38},{0,9,172}, |
| 29 | {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31}, | 29 | {0,8,6},{0,8,134},{0,8,70},{0,9,236},{128,7,9},{0,8,94}, |
| 30 | {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162}, | 30 | {0,8,30},{0,9,156},{132,7,99},{0,8,126},{0,8,62},{0,9,220}, |
| 31 | {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25}, | 31 | {130,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, |
| 32 | {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105}, | 32 | {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{133,8,131}, |
| 33 | {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4}, | 33 | {130,7,31},{0,8,113},{0,8,49},{0,9,194},{128,7,10},{0,8,97}, |
| 34 | {0,8,85},{0,8,21},{32,8,3},{19,7,43},{0,8,117},{0,8,53},{0,9,202}, | 34 | {0,8,33},{0,9,162},{0,8,1},{0,8,129},{0,8,65},{0,9,226}, |
| 35 | {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69}, | 35 | {128,7,6},{0,8,89},{0,8,25},{0,9,146},{131,7,59},{0,8,121}, |
| 36 | {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125}, | 36 | {0,8,57},{0,9,210},{129,7,17},{0,8,105},{0,8,41},{0,9,178}, |
| 37 | {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13}, | 37 | {0,8,9},{0,8,137},{0,8,73},{0,9,242},{128,7,4},{0,8,85}, |
| 38 | {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195}, | 38 | {0,8,21},{144,8,3},{131,7,43},{0,8,117},{0,8,53},{0,9,202}, |
| 39 | {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35}, | 39 | {129,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133}, |
| 40 | {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91}, | 40 | {0,8,69},{0,9,234},{128,7,8},{0,8,93},{0,8,29},{0,9,154}, |
| 41 | {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19}, | 41 | {132,7,83},{0,8,125},{0,8,61},{0,9,218},{130,7,23},{0,8,109}, |
| 42 | {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246}, | 42 | {0,8,45},{0,9,186},{0,8,13},{0,8,141},{0,8,77},{0,9,250}, |
| 43 | {16,7,5},{0,8,87},{0,8,23},{78,8,0},{19,7,51},{0,8,119},{0,8,55}, | 43 | {128,7,3},{0,8,83},{0,8,19},{133,8,195},{131,7,35},{0,8,115}, |
| 44 | {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135}, | 44 | {0,8,51},{0,9,198},{129,7,11},{0,8,99},{0,8,35},{0,9,166}, |
| 45 | {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99}, | 45 | {0,8,3},{0,8,131},{0,8,67},{0,9,230},{128,7,7},{0,8,91}, |
| 46 | {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190}, | 46 | {0,8,27},{0,9,150},{132,7,67},{0,8,123},{0,8,59},{0,9,214}, |
| 47 | {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16}, | 47 | {130,7,19},{0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139}, |
| 48 | {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96}, | 48 | {0,8,75},{0,9,246},{128,7,5},{0,8,87},{0,8,23},{77,8,0}, |
| 49 | {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6}, | 49 | {131,7,51},{0,8,119},{0,8,55},{0,9,206},{129,7,15},{0,8,103}, |
| 50 | {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209}, | 50 | {0,8,39},{0,9,174},{0,8,7},{0,8,135},{0,8,71},{0,9,238}, |
| 51 | {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72}, | 51 | {128,7,9},{0,8,95},{0,8,31},{0,9,158},{132,7,99},{0,8,127}, |
| 52 | {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116}, | 52 | {0,8,63},{0,9,222},{130,7,27},{0,8,111},{0,8,47},{0,9,190}, |
| 53 | {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4}, | 53 | {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80}, |
| 54 | {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153}, | 54 | {0,8,16},{132,8,115},{130,7,31},{0,8,112},{0,8,48},{0,9,193}, |
| 55 | {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44}, | 55 | {128,7,10},{0,8,96},{0,8,32},{0,9,161},{0,8,0},{0,8,128}, |
| 56 | {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82}, | 56 | {0,8,64},{0,9,225},{128,7,6},{0,8,88},{0,8,24},{0,9,145}, |
| 57 | {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11}, | 57 | {131,7,59},{0,8,120},{0,8,56},{0,9,209},{129,7,17},{0,8,104}, |
| 58 | {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, | 58 | {0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72},{0,9,241}, |
| 59 | {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58}, | 59 | {128,7,4},{0,8,84},{0,8,20},{133,8,227},{131,7,43},{0,8,116}, |
| 60 | {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138}, | 60 | {0,8,52},{0,9,201},{129,7,13},{0,8,100},{0,8,36},{0,9,169}, |
| 61 | {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{192,8,0},{19,7,51}, | 61 | {0,8,4},{0,8,132},{0,8,68},{0,9,233},{128,7,8},{0,8,92}, |
| 62 | {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173}, | 62 | {0,8,28},{0,9,153},{132,7,83},{0,8,124},{0,8,60},{0,9,217}, |
| 63 | {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30}, | 63 | {130,7,23},{0,8,108},{0,8,44},{0,9,185},{0,8,12},{0,8,140}, |
| 64 | {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110}, | 64 | {0,8,76},{0,9,249},{128,7,3},{0,8,82},{0,8,18},{133,8,163}, |
| 65 | {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0}, | 65 | {131,7,35},{0,8,114},{0,8,50},{0,9,197},{129,7,11},{0,8,98}, |
| 66 | {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195}, | 66 | {0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, |
| 67 | {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65}, | 67 | {128,7,7},{0,8,90},{0,8,26},{0,9,149},{132,7,67},{0,8,122}, |
| 68 | {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121}, | 68 | {0,8,58},{0,9,213},{130,7,19},{0,8,106},{0,8,42},{0,9,181}, |
| 69 | {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9}, | 69 | {0,8,10},{0,8,138},{0,8,74},{0,9,245},{128,7,5},{0,8,86}, |
| 70 | {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{32,8,3}, | 70 | {0,8,22},{65,8,0},{131,7,51},{0,8,118},{0,8,54},{0,9,205}, |
| 71 | {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37}, | 71 | {129,7,15},{0,8,102},{0,8,38},{0,9,173},{0,8,6},{0,8,134}, |
| 72 | {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93}, | 72 | {0,8,70},{0,9,237},{128,7,9},{0,8,94},{0,8,30},{0,9,157}, |
| 73 | {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23}, | 73 | {132,7,99},{0,8,126},{0,8,62},{0,9,221},{130,7,27},{0,8,110}, |
| 74 | {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251}, | 74 | {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253}, |
| 75 | {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51}, | 75 | {96,7,0},{0,8,81},{0,8,17},{133,8,131},{130,7,31},{0,8,113}, |
| 76 | {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, | 76 | {0,8,49},{0,9,195},{128,7,10},{0,8,97},{0,8,33},{0,9,163}, |
| 77 | {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67}, | 77 | {0,8,1},{0,8,129},{0,8,65},{0,9,227},{128,7,6},{0,8,89}, |
| 78 | {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183}, | 78 | {0,8,25},{0,9,147},{131,7,59},{0,8,121},{0,8,57},{0,9,211}, |
| 79 | {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23}, | 79 | {129,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9},{0,8,137}, |
| 80 | {78,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103}, | 80 | {0,8,73},{0,9,243},{128,7,4},{0,8,85},{0,8,21},{144,8,3}, |
| 81 | {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9}, | 81 | {131,7,43},{0,8,117},{0,8,53},{0,9,203},{129,7,13},{0,8,101}, |
| 82 | {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223}, | 82 | {0,8,37},{0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235}, |
| 83 | {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79}, | 83 | {128,7,8},{0,8,93},{0,8,29},{0,9,155},{132,7,83},{0,8,125}, |
| 84 | {0,9,255} | 84 | {0,8,61},{0,9,219},{130,7,23},{0,8,109},{0,8,45},{0,9,187}, |
| 85 | {0,8,13},{0,8,141},{0,8,77},{0,9,251},{128,7,3},{0,8,83}, | ||
| 86 | {0,8,19},{133,8,195},{131,7,35},{0,8,115},{0,8,51},{0,9,199}, | ||
| 87 | {129,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, | ||
| 88 | {0,8,67},{0,9,231},{128,7,7},{0,8,91},{0,8,27},{0,9,151}, | ||
| 89 | {132,7,67},{0,8,123},{0,8,59},{0,9,215},{130,7,19},{0,8,107}, | ||
| 90 | {0,8,43},{0,9,183},{0,8,11},{0,8,139},{0,8,75},{0,9,247}, | ||
| 91 | {128,7,5},{0,8,87},{0,8,23},{77,8,0},{131,7,51},{0,8,119}, | ||
| 92 | {0,8,55},{0,9,207},{129,7,15},{0,8,103},{0,8,39},{0,9,175}, | ||
| 93 | {0,8,7},{0,8,135},{0,8,71},{0,9,239},{128,7,9},{0,8,95}, | ||
| 94 | {0,8,31},{0,9,159},{132,7,99},{0,8,127},{0,8,63},{0,9,223}, | ||
| 95 | {130,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143}, | ||
| 96 | {0,8,79},{0,9,255} | ||
| 85 | }; | 97 | }; |
| 86 | 98 | ||
| 87 | static const code distfix[32] = { | 99 | static const code distfix[32] = { |
| 88 | {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025}, | 100 | {128,5,1},{135,5,257},{131,5,17},{139,5,4097},{129,5,5}, |
| 89 | {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193}, | 101 | {137,5,1025},{133,5,65},{141,5,16385},{128,5,3},{136,5,513}, |
| 90 | {18,5,9},{26,5,2049},{22,5,129},{30,5,32769},{16,5,2},{23,5,385}, | 102 | {132,5,33},{140,5,8193},{130,5,9},{138,5,2049},{134,5,129}, |
| 91 | {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577}, | 103 | {142,5,32769},{128,5,2},{135,5,385},{131,5,25},{139,5,6145}, |
| 92 | {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073}, | 104 | {129,5,7},{137,5,1537},{133,5,97},{141,5,24577},{128,5,4}, |
| 93 | {22,5,193},{30,5,49153} | 105 | {136,5,769},{132,5,49},{140,5,12289},{130,5,13},{138,5,3073}, |
| 106 | {134,5,193},{142,5,49153} | ||
| 94 | }; | 107 | }; |
diff --git a/contrib/infback9/inflate9.h b/contrib/infback9/inflate9.h new file mode 100644 index 0000000..ee9a793 --- /dev/null +++ b/contrib/infback9/inflate9.h | |||
| @@ -0,0 +1,47 @@ | |||
| 1 | /* inflate9.h -- internal inflate state definition | ||
| 2 | * Copyright (C) 1995-2003 Mark Adler | ||
| 3 | * For conditions of distribution and use, see copyright notice in zlib.h | ||
| 4 | */ | ||
| 5 | |||
| 6 | /* WARNING: this file should *not* be used by applications. It is | ||
| 7 | part of the implementation of the compression library and is | ||
| 8 | subject to change. Applications should only use zlib.h. | ||
| 9 | */ | ||
| 10 | |||
| 11 | /* Possible inflate modes between inflate() calls */ | ||
| 12 | typedef enum { | ||
| 13 | TYPE, /* i: waiting for type bits, including last-flag bit */ | ||
| 14 | STORED, /* i: waiting for stored size (length and complement) */ | ||
| 15 | TABLE, /* i: waiting for dynamic block table lengths */ | ||
| 16 | LEN, /* i: waiting for length/lit code */ | ||
| 17 | DONE, /* finished check, done -- remain here until reset */ | ||
| 18 | BAD /* got a data error -- remain here until reset */ | ||
| 19 | } inflate_mode; | ||
| 20 | |||
| 21 | /* | ||
| 22 | State transitions between above modes - | ||
| 23 | |||
| 24 | (most modes can go to the BAD mode -- not shown for clarity) | ||
| 25 | |||
| 26 | Read deflate blocks: | ||
| 27 | TYPE -> STORED or TABLE or LEN or DONE | ||
| 28 | STORED -> TYPE | ||
| 29 | TABLE -> LENLENS -> CODELENS -> LEN | ||
| 30 | Read deflate codes: | ||
| 31 | LEN -> LEN or TYPE | ||
| 32 | */ | ||
| 33 | |||
| 34 | /* state maintained between inflate() calls. Approximately 7K bytes. */ | ||
| 35 | struct inflate_state { | ||
| 36 | /* sliding window */ | ||
| 37 | unsigned char FAR *window; /* allocated sliding window, if needed */ | ||
| 38 | /* dynamic table building */ | ||
| 39 | unsigned ncode; /* number of code length code lengths */ | ||
| 40 | unsigned nlen; /* number of length code lengths */ | ||
| 41 | unsigned ndist; /* number of distance code lengths */ | ||
| 42 | unsigned have; /* number of code lengths in lens[] */ | ||
| 43 | code FAR *next; /* next available space in codes[] */ | ||
| 44 | unsigned short lens[320]; /* temporary storage for code lengths */ | ||
| 45 | unsigned short work[288]; /* work area for code table building */ | ||
| 46 | code codes[ENOUGH]; /* space for code tables */ | ||
| 47 | }; | ||
diff --git a/contrib/infback9/inftree9.c b/contrib/infback9/inftree9.c new file mode 100644 index 0000000..0c544cf --- /dev/null +++ b/contrib/infback9/inftree9.c | |||
| @@ -0,0 +1,323 @@ | |||
| 1 | /* inftree9.c -- generate Huffman trees for efficient decoding | ||
| 2 | * Copyright (C) 1995-2003 Mark Adler | ||
| 3 | * For conditions of distribution and use, see copyright notice in zlib.h | ||
| 4 | */ | ||
| 5 | |||
| 6 | #include "zutil.h" | ||
| 7 | #include "inftree9.h" | ||
| 8 | |||
| 9 | #define MAXBITS 15 | ||
| 10 | |||
| 11 | const char inflate9_copyright[] = | ||
| 12 | " inflate9 1.2.0.6 Copyright 1995-2003 Mark Adler "; | ||
| 13 | /* | ||
| 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 | ||
| 16 | include such an acknowledgment, I would appreciate that you keep this | ||
| 17 | copyright string in the executable of your product. | ||
| 18 | */ | ||
| 19 | |||
| 20 | /* | ||
| 21 | Build a set of tables to decode the provided canonical Huffman code. | ||
| 22 | The code lengths are lens[0..codes-1]. The result starts at *table, | ||
| 23 | whose indices are 0..2^bits-1. work is a writable array of at least | ||
| 24 | lens shorts, which is used as a work area. type is the type of code | ||
| 25 | to be generated, CODES, LENS, or DISTS. On return, zero is success, | ||
| 26 | -1 is an invalid code, and +1 means that ENOUGH isn't enough. table | ||
| 27 | on return points to the next available entry's address. bits is the | ||
| 28 | requested root table index bits, and on return it is the actual root | ||
| 29 | table index bits. It will differ if the request is greater than the | ||
| 30 | longest code or if it is less than the shortest code. | ||
| 31 | */ | ||
| 32 | int inflate_table9(type, lens, codes, table, bits, work) | ||
| 33 | codetype type; | ||
| 34 | unsigned short FAR *lens; | ||
| 35 | unsigned codes; | ||
| 36 | code FAR * FAR *table; | ||
| 37 | unsigned FAR *bits; | ||
| 38 | unsigned short FAR *work; | ||
| 39 | { | ||
| 40 | unsigned len; /* a code's length in bits */ | ||
| 41 | unsigned sym; /* index of code symbols */ | ||
| 42 | unsigned min, max; /* minimum and maximum code lengths */ | ||
| 43 | unsigned root; /* number of index bits for root table */ | ||
| 44 | unsigned curr; /* number of index bits for current table */ | ||
| 45 | unsigned drop; /* code bits to drop for sub-table */ | ||
| 46 | int left; /* number of prefix codes available */ | ||
| 47 | unsigned used; /* code entries in table used */ | ||
| 48 | unsigned huff; /* Huffman code */ | ||
| 49 | unsigned incr; /* for incrementing code, index */ | ||
| 50 | unsigned fill; /* index for replicating entries */ | ||
| 51 | unsigned low; /* low bits for current root entry */ | ||
| 52 | unsigned mask; /* mask for low root bits */ | ||
| 53 | code this; /* table entry for duplication */ | ||
| 54 | code FAR *next; /* next available space in table */ | ||
| 55 | const unsigned short FAR *base; /* base value table to use */ | ||
| 56 | const unsigned short FAR *extra; /* extra bits table to use */ | ||
| 57 | int end; /* use base and extra for symbol > end */ | ||
| 58 | unsigned short count[MAXBITS+1]; /* number of codes of each length */ | ||
| 59 | unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ | ||
| 60 | static const unsigned short lbase[31] = { /* Length codes 257..285 base */ | ||
| 61 | 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, | ||
| 62 | 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, | ||
| 63 | 131, 163, 195, 227, 3, 0, 0}; | ||
| 64 | static const unsigned short lext[31] = { /* Length codes 257..285 extra */ | ||
| 65 | 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, | ||
| 66 | 130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132, | ||
| 67 | 133, 133, 133, 133, 144, 65, 77}; | ||
| 68 | static const unsigned short dbase[32] = { /* Distance codes 0..31 base */ | ||
| 69 | 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, | ||
| 70 | 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, | ||
| 71 | 4097, 6145, 8193, 12289, 16385, 24577, 32769, 49153}; | ||
| 72 | static const unsigned short dext[32] = { /* Distance codes 0..31 extra */ | ||
| 73 | 128, 128, 128, 128, 129, 129, 130, 130, 131, 131, 132, 132, | ||
| 74 | 133, 133, 134, 134, 135, 135, 136, 136, 137, 137, 138, 138, | ||
| 75 | 139, 139, 140, 140, 141, 141, 142, 142}; | ||
| 76 | |||
| 77 | /* | ||
| 78 | Process a set of code lengths to create a canonical Huffman code. The | ||
| 79 | code lengths are lens[0..codes-1]. Each length corresponds to the | ||
| 80 | symbols 0..codes-1. The Huffman code is generated by first sorting the | ||
| 81 | symbols by length from short to long, and retaining the symbol order | ||
| 82 | for codes with equal lengths. Then the code starts with all zero bits | ||
| 83 | for the first code of the shortest length, and the codes are integer | ||
| 84 | increments for the same length, and zeros are appended as the length | ||
| 85 | increases. For the deflate format, these bits are stored backwards | ||
| 86 | from their more natural integer increment ordering, and so when the | ||
| 87 | decoding tables are built in the large loop below, the integer codes | ||
| 88 | are incremented backwards. | ||
| 89 | |||
| 90 | This routine assumes, but does not check, that all of the entries in | ||
| 91 | lens[] are in the range 0..MAXBITS. The caller must assure this. | ||
| 92 | 1..MAXBITS is interpreted as that code length. zero means that that | ||
| 93 | symbol does not occur in this code. | ||
| 94 | |||
| 95 | The codes are sorted by computing a count of codes for each length, | ||
| 96 | creating from that a table of starting indices for each length in the | ||
| 97 | sorted table, and then entering the symbols in order in the sorted | ||
| 98 | table. The sorted table is work[], with that space being provided by | ||
| 99 | the caller. | ||
| 100 | |||
| 101 | The length counts are used for other purposes as well, i.e. finding | ||
| 102 | the minimum and maximum length codes, determining if there are any | ||
| 103 | codes at all, checking for a valid set of lengths, and looking ahead | ||
| 104 | at length counts to determine sub-table sizes when building the | ||
| 105 | decoding tables. | ||
| 106 | */ | ||
| 107 | |||
| 108 | /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ | ||
| 109 | for (len = 0; len <= MAXBITS; len++) | ||
| 110 | count[len] = 0; | ||
| 111 | for (sym = 0; sym < codes; sym++) | ||
| 112 | count[lens[sym]]++; | ||
| 113 | |||
| 114 | /* bound code lengths, force root to be within code lengths */ | ||
| 115 | root = *bits; | ||
| 116 | for (max = MAXBITS; max >= 1; max--) | ||
| 117 | if (count[max] != 0) break; | ||
| 118 | if (root > max) root = max; | ||
| 119 | if (max == 0) return -1; /* no codes! */ | ||
| 120 | for (min = 1; min <= MAXBITS; min++) | ||
| 121 | if (count[min] != 0) break; | ||
| 122 | if (root < min) root = min; | ||
| 123 | |||
| 124 | /* check for an over-subscribed or incomplete set of lengths */ | ||
| 125 | left = 1; | ||
| 126 | for (len = 1; len <= MAXBITS; len++) { | ||
| 127 | left <<= 1; | ||
| 128 | left -= count[len]; | ||
| 129 | if (left < 0) return -1; /* over-subscribed */ | ||
| 130 | } | ||
| 131 | if (left > 0 && (type == CODES || (codes - count[0] != 1))) | ||
| 132 | return -1; /* incomplete set */ | ||
| 133 | |||
| 134 | /* generate offsets into symbol table for each length for sorting */ | ||
| 135 | offs[1] = 0; | ||
| 136 | for (len = 1; len < MAXBITS; len++) | ||
| 137 | offs[len + 1] = offs[len] + count[len]; | ||
| 138 | |||
| 139 | /* sort symbols by length, by symbol order within each length */ | ||
| 140 | for (sym = 0; sym < codes; sym++) | ||
| 141 | if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym; | ||
| 142 | |||
| 143 | /* | ||
| 144 | Create and fill in decoding tables. In this loop, the table being | ||
| 145 | filled is at next and has curr index bits. The code being used is huff | ||
| 146 | with length len. That code is converted to an index by dropping drop | ||
| 147 | bits off of the bottom. For codes where len is less than drop + curr, | ||
| 148 | those top drop + curr - len bits are incremented through all values to | ||
| 149 | fill the table with replicated entries. | ||
| 150 | |||
| 151 | root is the number of index bits for the root table. When len exceeds | ||
| 152 | root, sub-tables are created pointed to by the root entry with an index | ||
| 153 | of the low root bits of huff. This is saved in low to check for when a | ||
| 154 | new sub-table should be started. drop is zero when the root table is | ||
| 155 | being filled, and drop is root when sub-tables are being filled. | ||
| 156 | |||
| 157 | When a new sub-table is needed, it is necessary to look ahead in the | ||
| 158 | code lengths to determine what size sub-table is needed. The length | ||
| 159 | counts are used for this, and so count[] is decremented as codes are | ||
| 160 | entered in the tables. | ||
| 161 | |||
| 162 | used keeps track of how many table entries have been allocated from the | ||
| 163 | provided *table space. It is checked when a LENS table is being made | ||
| 164 | against the space in *table, ENOUGH, minus the maximum space needed by | ||
| 165 | the worst case distance code, MAXD. This should never happen, but the | ||
| 166 | sufficiency of ENOUGH has not been proven exhaustively, hence the check. | ||
| 167 | This assumes that when type == LENS, bits == 9. | ||
| 168 | |||
| 169 | sym increments through all symbols, and the loop terminates when | ||
| 170 | all codes of length max, i.e. all codes, have been processed. This | ||
| 171 | routine permits incomplete codes, so another loop after this one fills | ||
| 172 | in the rest of the decoding tables with invalid code markers. | ||
| 173 | */ | ||
| 174 | |||
| 175 | /* set up for code type */ | ||
| 176 | switch (type) { | ||
| 177 | case CODES: | ||
| 178 | base = extra = work; /* dummy value--not used */ | ||
| 179 | end = 19; | ||
| 180 | break; | ||
| 181 | case LENS: | ||
| 182 | base = lbase; | ||
| 183 | base -= 257; | ||
| 184 | extra = lext; | ||
| 185 | extra -= 257; | ||
| 186 | end = 256; | ||
| 187 | break; | ||
| 188 | default: /* DISTS */ | ||
| 189 | base = dbase; | ||
| 190 | extra = dext; | ||
| 191 | end = -1; | ||
| 192 | } | ||
| 193 | |||
| 194 | /* initialize state for loop */ | ||
| 195 | huff = 0; /* starting code */ | ||
| 196 | sym = 0; /* starting code symbol */ | ||
| 197 | len = min; /* starting code length */ | ||
| 198 | next = *table; /* current table to fill in */ | ||
| 199 | curr = root; /* current table index bits */ | ||
| 200 | drop = 0; /* current bits to drop from code for index */ | ||
| 201 | low = (unsigned)(-1); /* trigger new sub-table when len > root */ | ||
| 202 | used = 1U << root; /* use root table entries */ | ||
| 203 | mask = used - 1; /* mask for comparing low */ | ||
| 204 | |||
| 205 | /* check available table space */ | ||
| 206 | if (type == LENS && used >= ENOUGH - MAXD) | ||
| 207 | return 1; | ||
| 208 | |||
| 209 | /* process all codes and make table entries */ | ||
| 210 | for (;;) { | ||
| 211 | /* create table entry */ | ||
| 212 | this.bits = (unsigned char)(len - drop); | ||
| 213 | if ((int)(work[sym]) < end) { | ||
| 214 | this.op = (unsigned char)0; | ||
| 215 | this.val = work[sym]; | ||
| 216 | } | ||
| 217 | else if ((int)(work[sym]) > end) { | ||
| 218 | this.op = (unsigned char)(extra[work[sym]]); | ||
| 219 | this.val = base[work[sym]]; | ||
| 220 | } | ||
| 221 | else { | ||
| 222 | this.op = (unsigned char)(32 + 64); /* end of block */ | ||
| 223 | this.val = 0; | ||
| 224 | } | ||
| 225 | |||
| 226 | /* replicate for those indices with low len bits equal to huff */ | ||
| 227 | incr = 1U << (len - drop); | ||
| 228 | fill = 1U << curr; | ||
| 229 | do { | ||
| 230 | fill -= incr; | ||
| 231 | next[(huff >> drop) + fill] = this; | ||
| 232 | } while (fill != 0); | ||
| 233 | |||
| 234 | /* backwards increment the len-bit code huff */ | ||
| 235 | incr = 1U << (len - 1); | ||
| 236 | while (huff & incr) | ||
| 237 | incr >>= 1; | ||
| 238 | if (incr != 0) { | ||
| 239 | huff &= incr - 1; | ||
| 240 | huff += incr; | ||
| 241 | } | ||
| 242 | else | ||
| 243 | huff = 0; | ||
| 244 | |||
| 245 | /* go to next symbol, update count, len */ | ||
| 246 | sym++; | ||
| 247 | if (--(count[len]) == 0) { | ||
| 248 | if (len == max) break; | ||
| 249 | len = lens[work[sym]]; | ||
| 250 | } | ||
| 251 | |||
| 252 | /* create new sub-table if needed */ | ||
| 253 | if (len > root && (huff & mask) != low) { | ||
| 254 | /* if first time, transition to sub-tables */ | ||
| 255 | if (drop == 0) | ||
| 256 | drop = root; | ||
| 257 | |||
| 258 | /* increment past last table */ | ||
| 259 | next += 1U << curr; | ||
| 260 | |||
| 261 | /* determine length of next table */ | ||
| 262 | curr = len - drop; | ||
| 263 | left = (int)(1 << curr); | ||
| 264 | while (curr + drop < max) { | ||
| 265 | left -= count[curr + drop]; | ||
| 266 | if (left <= 0) break; | ||
| 267 | curr++; | ||
| 268 | left <<= 1; | ||
| 269 | } | ||
| 270 | |||
| 271 | /* check for enough space */ | ||
| 272 | used += 1U << curr; | ||
| 273 | if (type == LENS && used >= ENOUGH - MAXD) | ||
| 274 | return 1; | ||
| 275 | |||
| 276 | /* point entry in root table to sub-table */ | ||
| 277 | low = huff & mask; | ||
| 278 | (*table)[low].op = (unsigned char)curr; | ||
| 279 | (*table)[low].bits = (unsigned char)root; | ||
| 280 | (*table)[low].val = (unsigned short)(next - *table); | ||
| 281 | } | ||
| 282 | } | ||
| 283 | |||
| 284 | /* | ||
| 285 | Fill in rest of table for incomplete codes. This loop is similar to the | ||
| 286 | loop above in incrementing huff for table indices. It is assumed that | ||
| 287 | len is equal to curr + drop, so there is no loop needed to increment | ||
| 288 | through high index bits. When the current sub-table is filled, the loop | ||
| 289 | drops back to the root table to fill in any remaining entries there. | ||
| 290 | */ | ||
| 291 | this.op = (unsigned char)64; /* invalid code marker */ | ||
| 292 | this.bits = (unsigned char)(len - drop); | ||
| 293 | this.val = (unsigned short)0; | ||
| 294 | while (huff != 0) { | ||
| 295 | /* when done with sub-table, drop back to root table */ | ||
| 296 | if (drop != 0 && (huff & mask) != low) { | ||
| 297 | drop = 0; | ||
| 298 | len = root; | ||
| 299 | next = *table; | ||
| 300 | curr = root; | ||
| 301 | this.bits = (unsigned char)len; | ||
| 302 | } | ||
| 303 | |||
| 304 | /* put invalid code marker in table */ | ||
| 305 | next[huff >> drop] = this; | ||
| 306 | |||
| 307 | /* backwards increment the len-bit code huff */ | ||
| 308 | incr = 1U << (len - 1); | ||
| 309 | while (huff & incr) | ||
| 310 | incr >>= 1; | ||
| 311 | if (incr != 0) { | ||
| 312 | huff &= incr - 1; | ||
| 313 | huff += incr; | ||
| 314 | } | ||
| 315 | else | ||
| 316 | huff = 0; | ||
| 317 | } | ||
| 318 | |||
| 319 | /* set return parameters */ | ||
| 320 | *table += used; | ||
| 321 | *bits = root; | ||
| 322 | return 0; | ||
| 323 | } | ||
diff --git a/contrib/infback9/inftree9.h b/contrib/infback9/inftree9.h new file mode 100644 index 0000000..6a699a7 --- /dev/null +++ b/contrib/infback9/inftree9.h | |||
| @@ -0,0 +1,55 @@ | |||
| 1 | /* inftree9.h -- header to use inftree9.c | ||
| 2 | * Copyright (C) 1995-2003 Mark Adler | ||
| 3 | * For conditions of distribution and use, see copyright notice in zlib.h | ||
| 4 | */ | ||
| 5 | |||
| 6 | /* WARNING: this file should *not* be used by applications. It is | ||
| 7 | part of the implementation of the compression library and is | ||
| 8 | subject to change. Applications should only use zlib.h. | ||
| 9 | */ | ||
| 10 | |||
| 11 | /* Structure for decoding tables. Each entry provides either the | ||
| 12 | information needed to do the operation requested by the code that | ||
| 13 | indexed that table entry, or it provides a pointer to another | ||
| 14 | table that indexes more bits of the code. op indicates whether | ||
| 15 | the entry is a pointer to another table, a literal, a length or | ||
| 16 | distance, an end-of-block, or an invalid code. For a table | ||
| 17 | pointer, the low four bits of op is the number of index bits of | ||
| 18 | that table. For a length or distance, the low four bits of op | ||
| 19 | is the number of extra bits to get after the code. bits is | ||
| 20 | the number of bits in this code or part of the code to drop off | ||
| 21 | of the bit buffer. val is the actual byte to output in the case | ||
| 22 | of a literal, the base length or distance, or the offset from | ||
| 23 | the current table to the next table. Each entry is four bytes. */ | ||
| 24 | typedef struct { | ||
| 25 | unsigned char op; /* operation, extra bits, table bits */ | ||
| 26 | unsigned char bits; /* bits in this part of the code */ | ||
| 27 | unsigned short val; /* offset in table or code value */ | ||
| 28 | } code; | ||
| 29 | |||
| 30 | /* op values as set by inflate_table(): | ||
| 31 | 00000000 - literal | ||
| 32 | 0000tttt - table link, tttt != 0 is the number of table index bits | ||
| 33 | 100eeeee - length or distance, eeee is the number of extra bits | ||
| 34 | 01100000 - end of block | ||
| 35 | 01000000 - invalid code | ||
| 36 | */ | ||
| 37 | |||
| 38 | /* Maximum size of dynamic tree. The maximum found in a long but non- | ||
| 39 | exhaustive search was 1004 code structures (850 for length/literals | ||
| 40 | and 154 for distances, the latter actually the result of an | ||
| 41 | exhaustive search). The true maximum is not known, but the value | ||
| 42 | below is more than safe. */ | ||
| 43 | #define ENOUGH 1440 | ||
| 44 | #define MAXD 154 | ||
| 45 | |||
| 46 | /* Type of code to build for inftable() */ | ||
| 47 | typedef enum { | ||
| 48 | CODES, | ||
| 49 | LENS, | ||
| 50 | DISTS | ||
| 51 | } codetype; | ||
| 52 | |||
| 53 | extern int inflate_table9 OF((codetype type, unsigned short FAR *lens, | ||
| 54 | unsigned codes, code FAR * FAR *table, | ||
| 55 | unsigned FAR *bits, unsigned short FAR *work)); | ||
diff --git a/contrib/minizip/ChangeLogUnzip b/contrib/minizip/ChangeLogUnzip index cfabd61..d7d4b6b 100644 --- a/contrib/minizip/ChangeLogUnzip +++ b/contrib/minizip/ChangeLogUnzip | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | Change in 1.00: (10 sept 03) | ||
| 2 | - rename to 1.00 | ||
| 3 | - cosmetic code change | ||
| 4 | |||
| 1 | Change in 0.22: (19 May 03) | 5 | Change in 0.22: (19 May 03) |
| 2 | - crypting support (unless you define NOCRYPT) | 6 | - crypting support (unless you define NOCRYPT) |
| 3 | - append file in existing zipfile | 7 | - append file in existing zipfile |
diff --git a/contrib/minizip/crypt.h b/contrib/minizip/crypt.h index a02bf0b..9c7a89c 100644 --- a/contrib/minizip/crypt.h +++ b/contrib/minizip/crypt.h | |||
| @@ -1,3 +1,31 @@ | |||
| 1 | /* crypt.h -- base code for crypt/uncrypt ZIPfile | ||
| 2 | |||
| 3 | |||
| 4 | Version 1.00, September 10th, 2003 | ||
| 5 | |||
| 6 | Copyright (C) 1998-2003 Gilles Vollant | ||
| 7 | |||
| 8 | This code is a modified version of crypting code in Infozip distribution | ||
| 9 | |||
| 10 | The encryption/decryption parts of this source code (as opposed to the | ||
| 11 | non-echoing password parts) were originally written in Europe. The | ||
| 12 | whole source package can be freely distributed, including from the USA. | ||
| 13 | (Prior to January 2000, re-export from the US was a violation of US law.) | ||
| 14 | |||
| 15 | This encryption code is a direct transcription of the algorithm from | ||
| 16 | Roger Schlafly, described by Phil Katz in the file appnote.txt. This | ||
| 17 | file (appnote.txt) is distributed with the PKZIP program (even in the | ||
| 18 | version without encryption capabilities). | ||
| 19 | |||
| 20 | If you don't need crypting in your application, just define symbols | ||
| 21 | NOCRYPT and NOUNCRYPT. | ||
| 22 | |||
| 23 | This code support the "Traditional PKWARE Encryption". | ||
| 24 | |||
| 25 | The new AES encryption added on Zip format by Winzip (see the page | ||
| 26 | http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong | ||
| 27 | Encryption is not supported. | ||
| 28 | */ | ||
| 1 | 29 | ||
| 2 | #define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8)) | 30 | #define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8)) |
| 3 | 31 | ||
diff --git a/contrib/minizip/ioapi.c b/contrib/minizip/ioapi.c index ea9ee30..80443b7 100644 --- a/contrib/minizip/ioapi.c +++ b/contrib/minizip/ioapi.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* ioapi.c -- IO base function header for compress/uncompress .zip | 1 | /* ioapi.c -- IO base function header for compress/uncompress .zip |
| 2 | files using zlib + zip or unzip API | 2 | files using zlib + zip or unzip API |
| 3 | 3 | ||
| 4 | Version 0.22, May 19th, 2003 | 4 | Version 1.00, September 10th, 2003 |
| 5 | 5 | ||
| 6 | Copyright (C) 1998-2003 Gilles Vollant | 6 | Copyright (C) 1998-2003 Gilles Vollant |
| 7 | */ | 7 | */ |
diff --git a/contrib/minizip/ioapi.h b/contrib/minizip/ioapi.h index 13f4f21..6bc2a2c 100644 --- a/contrib/minizip/ioapi.h +++ b/contrib/minizip/ioapi.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* ioapi.h -- IO base function header for compress/uncompress .zip | 1 | /* ioapi.h -- IO base function header for compress/uncompress .zip |
| 2 | files using zlib + zip or unzip API | 2 | files using zlib + zip or unzip API |
| 3 | 3 | ||
| 4 | Version 0.22, May 19th, 2003 | 4 | Version 1.00, September 10th, 2003 |
| 5 | 5 | ||
| 6 | Copyright (C) 1998-2003 Gilles Vollant | 6 | Copyright (C) 1998-2003 Gilles Vollant |
| 7 | */ | 7 | */ |
diff --git a/contrib/minizip/iowin32.c b/contrib/minizip/iowin32.c index 8e6d43d..02b27cb 100644 --- a/contrib/minizip/iowin32.c +++ b/contrib/minizip/iowin32.c | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | files using zlib + zip or unzip API | 2 | files using zlib + zip or unzip API |
| 3 | This IO API version uses the Win32 API (for Microsoft Windows) | 3 | This IO API version uses the Win32 API (for Microsoft Windows) |
| 4 | 4 | ||
| 5 | Version 0.22, May 19th, 2003 | 5 | Version 1.00, September 10th, 2003 |
| 6 | 6 | ||
| 7 | Copyright (C) 1998-2003 Gilles Vollant | 7 | Copyright (C) 1998-2003 Gilles Vollant |
| 8 | */ | 8 | */ |
diff --git a/contrib/minizip/iowin32.h b/contrib/minizip/iowin32.h index 94aa1aa..c0ebd50 100644 --- a/contrib/minizip/iowin32.h +++ b/contrib/minizip/iowin32.h | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | files using zlib + zip or unzip API | 2 | files using zlib + zip or unzip API |
| 3 | This IO API version uses the Win32 API (for Microsoft Windows) | 3 | This IO API version uses the Win32 API (for Microsoft Windows) |
| 4 | 4 | ||
| 5 | Version 0.22, May 19th, 2003 | 5 | Version 1.00, September 10th, 2003 |
| 6 | 6 | ||
| 7 | Copyright (C) 1998-2003 Gilles Vollant | 7 | Copyright (C) 1998-2003 Gilles Vollant |
| 8 | */ | 8 | */ |
diff --git a/contrib/minizip/miniunz.c b/contrib/minizip/miniunz.c index 57601e1..c8cf81e 100644 --- a/contrib/minizip/miniunz.c +++ b/contrib/minizip/miniunz.c | |||
| @@ -140,7 +140,7 @@ int makedir (newdir) | |||
| 140 | 140 | ||
| 141 | void do_banner() | 141 | void do_banner() |
| 142 | { | 142 | { |
| 143 | printf("MiniUnz 0.22, demo of zLib + Unz package written by Gilles Vollant\n"); | 143 | printf("MiniUnz 1.00, demo of zLib + Unz package written by Gilles Vollant\n"); |
| 144 | printf("more info at http://www.winimage.com/zLibDll/unzip.html\n\n"); | 144 | printf("more info at http://www.winimage.com/zLibDll/unzip.html\n\n"); |
| 145 | } | 145 | } |
| 146 | 146 | ||
diff --git a/contrib/minizip/minizip.c b/contrib/minizip/minizip.c index 7e2ce36..5746f5c 100644 --- a/contrib/minizip/minizip.c +++ b/contrib/minizip/minizip.c | |||
| @@ -120,7 +120,7 @@ int check_exist_file(filename) | |||
| 120 | 120 | ||
| 121 | void do_banner() | 121 | void do_banner() |
| 122 | { | 122 | { |
| 123 | printf("MiniZip 0.22, demo of zLib + Zip package written by Gilles Vollant\n"); | 123 | printf("MiniZip 1.00, demo of zLib + Zip package written by Gilles Vollant\n"); |
| 124 | printf("more info at http://www.winimage.com/zLibDll/unzip.html\n\n"); | 124 | printf("more info at http://www.winimage.com/zLibDll/unzip.html\n\n"); |
| 125 | } | 125 | } |
| 126 | 126 | ||
diff --git a/contrib/minizip/unzip.c b/contrib/minizip/unzip.c index 81c8c28..f08f624 100644 --- a/contrib/minizip/unzip.c +++ b/contrib/minizip/unzip.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* unzip.c -- IO for uncompress .zip files using zlib | 1 | /* unzip.c -- IO for uncompress .zip files using zlib |
| 2 | Version 0.22, May 19th, 2003 | 2 | Version 1.00, September 10th, 2003 |
| 3 | 3 | ||
| 4 | Copyright (C) 1998-2003 Gilles Vollant | 4 | Copyright (C) 1998-2003 Gilles Vollant |
| 5 | 5 | ||
| @@ -88,7 +88,7 @@ woven in by Terry Thorsen 1/2003. | |||
| 88 | 88 | ||
| 89 | 89 | ||
| 90 | const char unz_copyright[] = | 90 | const char unz_copyright[] = |
| 91 | " unzip 0.22 Copyright 1998-2003 Gilles Vollant - http://www.winimage.com/zLibDll"; | 91 | " unzip 1.00 Copyright 1998-2003 Gilles Vollant - http://www.winimage.com/zLibDll"; |
| 92 | 92 | ||
| 93 | /* unz_file_info_interntal contain internal info about a file in zipfile*/ | 93 | /* unz_file_info_interntal contain internal info about a file in zipfile*/ |
| 94 | typedef struct unz_file_info_internal_s | 94 | typedef struct unz_file_info_internal_s |
diff --git a/contrib/minizip/unzip.h b/contrib/minizip/unzip.h index 4c2f5e1..4e50979 100644 --- a/contrib/minizip/unzip.h +++ b/contrib/minizip/unzip.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* unzip.h -- IO for uncompress .zip files using zlib | 1 | /* unzip.h -- IO for uncompress .zip files using zlib |
| 2 | Version 0.22, May 19th, 2003 | 2 | Version 1.00, September 10th, 2003 |
| 3 | 3 | ||
| 4 | Copyright (C) 1998-2003 Gilles Vollant | 4 | Copyright (C) 1998-2003 Gilles Vollant |
| 5 | 5 | ||
diff --git a/contrib/minizip/zip.c b/contrib/minizip/zip.c index 193c539..1a713e5 100644 --- a/contrib/minizip/zip.c +++ b/contrib/minizip/zip.c | |||
| @@ -1,5 +1,7 @@ | |||
| 1 | /* zip.c -- IO on .zip files using zlib | 1 | /* zip.c -- IO on .zip files using zlib |
| 2 | Version 0.22, May 19th, 2003 | 2 | Version 1.00, September 10th, 2003 |
| 3 | |||
| 4 | Copyright (C) 1998-2003 Gilles Vollant | ||
| 3 | 5 | ||
| 4 | Read zip.h for more info | 6 | Read zip.h for more info |
| 5 | */ | 7 | */ |
| @@ -75,7 +77,7 @@ | |||
| 75 | #endif | 77 | #endif |
| 76 | #endif | 78 | #endif |
| 77 | const char zip_copyright[] = | 79 | const char zip_copyright[] = |
| 78 | " zip 0.22 Copyright 1998-2003 Gilles Vollant - http://www.winimage.com/zLibDll"; | 80 | " zip 1.00 Copyright 1998-2003 Gilles Vollant - http://www.winimage.com/zLibDll"; |
| 79 | 81 | ||
| 80 | 82 | ||
| 81 | #define SIZEDATA_INDATABLOCK (4096-(4*4)) | 83 | #define SIZEDATA_INDATABLOCK (4096-(4*4)) |
diff --git a/contrib/minizip/zip.h b/contrib/minizip/zip.h index 5a75fc6..c37ea21 100644 --- a/contrib/minizip/zip.h +++ b/contrib/minizip/zip.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* zip.h -- IO for compress .zip files using zlib | 1 | /* zip.h -- IO for compress .zip files using zlib |
| 2 | Version 0.22, May 19th, 2003 | 2 | Version 1.00, September 10th, 2003 |
| 3 | 3 | ||
| 4 | Copyright (C) 1998-2003 Gilles Vollant | 4 | Copyright (C) 1998-2003 Gilles Vollant |
| 5 | 5 | ||
diff --git a/contrib/puff/puff.c b/contrib/puff/puff.c index a30fb17..7a8116b 100644 --- a/contrib/puff/puff.c +++ b/contrib/puff/puff.c | |||
| @@ -58,7 +58,7 @@ | |||
| 58 | * - Add FIXLCODES #define | 58 | * - Add FIXLCODES #define |
| 59 | * 1.5 6 Apr 2002 - Minor comment fixes | 59 | * 1.5 6 Apr 2002 - Minor comment fixes |
| 60 | * 1.6 7 Aug 2002 - Minor format changes | 60 | * 1.6 7 Aug 2002 - Minor format changes |
| 61 | * 1.7 3 Mar 2002 - Added test code for distribution | 61 | * 1.7 3 Mar 2003 - Added test code for distribution |
| 62 | * - Added zlib-like license | 62 | * - Added zlib-like license |
| 63 | */ | 63 | */ |
| 64 | 64 | ||
| @@ -52,7 +52,7 @@ | |||
| 52 | #include "deflate.h" | 52 | #include "deflate.h" |
| 53 | 53 | ||
| 54 | const char deflate_copyright[] = | 54 | const char deflate_copyright[] = |
| 55 | " deflate 1.2.0.5 Copyright 1995-2003 Jean-loup Gailly "; | 55 | " deflate 1.2.0.6 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 |
| @@ -89,6 +89,9 @@ void test_gzio(fname, uncompr, uncomprLen) | |||
| 89 | Byte *uncompr; | 89 | Byte *uncompr; |
| 90 | uLong uncomprLen; | 90 | uLong uncomprLen; |
| 91 | { | 91 | { |
| 92 | #ifdef NO_GZCOMPRESS | ||
| 93 | fprintf(stderr, "NO_GZCOMPRESS -- gz* functions cannot compress\n"); | ||
| 94 | #else | ||
| 92 | int err; | 95 | int err; |
| 93 | int len = (int)strlen(hello)+1; | 96 | int len = (int)strlen(hello)+1; |
| 94 | gzFile file; | 97 | gzFile file; |
| @@ -159,6 +162,7 @@ void test_gzio(fname, uncompr, uncomprLen) | |||
| 159 | } | 162 | } |
| 160 | 163 | ||
| 161 | gzclose(file); | 164 | gzclose(file); |
| 165 | #endif | ||
| 162 | } | 166 | } |
| 163 | 167 | ||
| 164 | /* =========================================================================== | 168 | /* =========================================================================== |
| @@ -30,6 +30,11 @@ struct internal_state {int dummy;}; /* for buggy compilers */ | |||
| 30 | # define Z_PRINTF_BUFSIZE 4096 | 30 | # define Z_PRINTF_BUFSIZE 4096 |
| 31 | #endif | 31 | #endif |
| 32 | 32 | ||
| 33 | #ifdef __MVS__ | ||
| 34 | # pragma map (fdopen , "\174\174FDOPEN") | ||
| 35 | FILE *fdopen(int, const char *); | ||
| 36 | #endif | ||
| 37 | |||
| 33 | #ifndef STDC | 38 | #ifndef STDC |
| 34 | extern voidp malloc OF((uInt size)); | 39 | extern voidp malloc OF((uInt size)); |
| 35 | extern void free OF((voidpf ptr)); | 40 | extern void free OF((voidpf ptr)); |
| @@ -19,6 +19,7 @@ | |||
| 19 | - none | 19 | - none |
| 20 | No measurable difference: | 20 | No measurable difference: |
| 21 | - Pentium III (Anderson) | 21 | - Pentium III (Anderson) |
| 22 | - 68060 (Nikl) | ||
| 22 | */ | 23 | */ |
| 23 | #ifdef POSTINC | 24 | #ifdef POSTINC |
| 24 | # define OFF 0 | 25 | # define OFF 0 |
| @@ -9,7 +9,7 @@ | |||
| 9 | #define MAXBITS 15 | 9 | #define MAXBITS 15 |
| 10 | 10 | ||
| 11 | const char inflate_copyright[] = | 11 | const char inflate_copyright[] = |
| 12 | " inflate 1.2.0.5 Copyright 1995-2003 Mark Adler "; | 12 | " inflate 1.2.0.6 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 |
| @@ -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, 192, 78}; | 65 | 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 65, 77}; |
| 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/qnx/package.qpg b/qnx/package.qpg index 26c42c3..f07311f 100644 --- a/qnx/package.qpg +++ b/qnx/package.qpg | |||
| @@ -25,10 +25,10 @@ | |||
| 25 | <QPG:Files> | 25 | <QPG:Files> |
| 26 | <QPG:Add file="../zconf.h" install="/opt/include/" user="root:sys" permission="644"/> | 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"/> | 27 | <QPG:Add file="../zlib.h" install="/opt/include/" user="root:sys" permission="644"/> |
| 28 | <QPG:Add file="../libz.so.1.2.0.5" install="/opt/lib/" user="root:bin" permission="644"/> | 28 | <QPG:Add file="../libz.so.1.2.0.6" 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.5"/> | 29 | <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.0.6"/> |
| 30 | <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.0.5"/> | 30 | <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.0.6"/> |
| 31 | <QPG:Add file="../libz.so.1.2.0.5" install="/opt/lib/" component="slib"/> | 31 | <QPG:Add file="../libz.so.1.2.0.6" install="/opt/lib/" component="slib"/> |
| 32 | </QPG:Files> | 32 | </QPG:Files> |
| 33 | 33 | ||
| 34 | <QPG:PackageFilter> | 34 | <QPG:PackageFilter> |
| @@ -63,7 +63,7 @@ | |||
| 63 | </QPM:ProductDescription> | 63 | </QPM:ProductDescription> |
| 64 | 64 | ||
| 65 | <QPM:ReleaseDescription> | 65 | <QPM:ReleaseDescription> |
| 66 | <QPM:ReleaseVersion>1.2.0.5</QPM:ReleaseVersion> | 66 | <QPM:ReleaseVersion>1.2.0.6</QPM:ReleaseVersion> |
| 67 | <QPM:ReleaseUrgency>Medium</QPM:ReleaseUrgency> | 67 | <QPM:ReleaseUrgency>Medium</QPM:ReleaseUrgency> |
| 68 | <QPM:ReleaseStability>Stable</QPM:ReleaseStability> | 68 | <QPM:ReleaseStability>Stable</QPM:ReleaseStability> |
| 69 | <QPM:ReleaseNoteMinor></QPM:ReleaseNoteMinor> | 69 | <QPM:ReleaseNoteMinor></QPM:ReleaseNoteMinor> |
diff --git a/win32/zlib1.rc b/win32/zlib1.rc index 138d30c..f5f2a1f 100644 --- a/win32/zlib1.rc +++ b/win32/zlib1.rc | |||
| @@ -5,8 +5,8 @@ VS_VERSION_INFO VERSIONINFO | |||
| 5 | #else | 5 | #else |
| 6 | VS_VERSION_INFO VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE | 6 | VS_VERSION_INFO VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE |
| 7 | #endif | 7 | #endif |
| 8 | FILEVERSION 1,2,0,5 | 8 | FILEVERSION 1,2,0,6 |
| 9 | PRODUCTVERSION 1,2,0,5 | 9 | PRODUCTVERSION 1,2,0,6 |
| 10 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK | 10 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK |
| 11 | #ifdef _DEBUG | 11 | #ifdef _DEBUG |
| 12 | FILEFLAGS 1 | 12 | FILEFLAGS 1 |
| @@ -23,12 +23,12 @@ BEGIN | |||
| 23 | //language ID = U.S. English, char set = Windows, Multilingual | 23 | //language ID = U.S. English, char set = Windows, Multilingual |
| 24 | BEGIN | 24 | BEGIN |
| 25 | VALUE "FileDescription", "zlib data compression library\0" | 25 | VALUE "FileDescription", "zlib data compression library\0" |
| 26 | VALUE "FileVersion", "1.2.0.5\0" | 26 | VALUE "FileVersion", "1.2.0.6\0" |
| 27 | VALUE "InternalName", "zlib1.dll\0" | 27 | VALUE "InternalName", "zlib1.dll\0" |
| 28 | VALUE "LegalCopyright", "(C) 1995-2003 Jean-loup Gailly & Mark Adler\0" | 28 | VALUE "LegalCopyright", "(C) 1995-2003 Jean-loup Gailly & Mark Adler\0" |
| 29 | VALUE "OriginalFilename", "zlib1.dll\0" | 29 | VALUE "OriginalFilename", "zlib1.dll\0" |
| 30 | VALUE "ProductName", "zlib\0" | 30 | VALUE "ProductName", "zlib\0" |
| 31 | VALUE "ProductVersion", "1.2.0.5\0" | 31 | VALUE "ProductVersion", "1.2.0.6\0" |
| 32 | VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" | 32 | VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" |
| 33 | END | 33 | END |
| 34 | END | 34 | END |
| @@ -287,6 +287,13 @@ typedef uLong FAR uLongf; | |||
| 287 | # define z_off_t long | 287 | # define z_off_t long |
| 288 | #endif | 288 | #endif |
| 289 | 289 | ||
| 290 | #if defined(__MVS__) | ||
| 291 | #define NO_vsnprintf | ||
| 292 | #ifdef FAR | ||
| 293 | #undef FAR | ||
| 294 | #endif | ||
| 295 | #endif | ||
| 296 | |||
| 290 | /* MVS linker does not support external names larger than 8 bytes */ | 297 | /* MVS linker does not support external names larger than 8 bytes */ |
| 291 | #if defined(__MVS__) | 298 | #if defined(__MVS__) |
| 292 | # pragma map(deflateInit_,"DEIN") | 299 | # pragma map(deflateInit_,"DEIN") |
| @@ -287,6 +287,13 @@ typedef uLong FAR uLongf; | |||
| 287 | # define z_off_t long | 287 | # define z_off_t long |
| 288 | #endif | 288 | #endif |
| 289 | 289 | ||
| 290 | #if defined(__MVS__) | ||
| 291 | #define NO_vsnprintf | ||
| 292 | #ifdef FAR | ||
| 293 | #undef FAR | ||
| 294 | #endif | ||
| 295 | #endif | ||
| 296 | |||
| 290 | /* MVS linker does not support external names larger than 8 bytes */ | 297 | /* MVS linker does not support external names larger than 8 bytes */ |
| 291 | #if defined(__MVS__) | 298 | #if defined(__MVS__) |
| 292 | # pragma map(deflateInit_,"DEIN") | 299 | # pragma map(deflateInit_,"DEIN") |
| @@ -1,4 +1,4 @@ | |||
| 1 | .TH ZLIB 3 "8 September 2003" | 1 | .TH ZLIB 3 "13 September 2003" |
| 2 | .SH NAME | 2 | .SH NAME |
| 3 | zlib \- compression/decompression library | 3 | zlib \- compression/decompression library |
| 4 | .SH SYNOPSIS | 4 | .SH SYNOPSIS |
| @@ -133,7 +133,7 @@ before asking for help. | |||
| 133 | Send questions and/or comments to zlib@gzip.org, | 133 | Send questions and/or comments to zlib@gzip.org, |
| 134 | or (for the Windows DLL version) to Gilles Vollant (info@winimage.com). | 134 | or (for the Windows DLL version) to Gilles Vollant (info@winimage.com). |
| 135 | .SH AUTHORS | 135 | .SH AUTHORS |
| 136 | Version 1.2.0.5 | 136 | Version 1.2.0.6 |
| 137 | Copyright (C) 1995-2003 Jean-loup Gailly (jloup@gzip.org) | 137 | Copyright (C) 1995-2003 Jean-loup Gailly (jloup@gzip.org) |
| 138 | and Mark Adler (madler@alumni.caltech.edu). | 138 | and Mark Adler (madler@alumni.caltech.edu). |
| 139 | .LP | 139 | .LP |
| @@ -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.5, September 8th, 2003 | 2 | version 1.2.0.6, September 13th, 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 @@ | |||
| 37 | extern "C" { | 37 | extern "C" { |
| 38 | #endif | 38 | #endif |
| 39 | 39 | ||
| 40 | #define ZLIB_VERSION "1.2.0.5" | 40 | #define ZLIB_VERSION "1.2.0.6" |
| 41 | #define ZLIB_VERNUM 0x1205 | 41 | #define ZLIB_VERNUM 0x1206 |
| 42 | 42 | ||
| 43 | /* | 43 | /* |
| 44 | The 'zlib' compression library provides in-memory compression and | 44 | The 'zlib' compression library provides in-memory compression and |
| @@ -777,7 +777,7 @@ ZEXTERN int ZEXPORT inflateBack OF((z_stream FAR *strm, | |||
| 777 | 777 | ||
| 778 | The in_desc and out_desc parameters of inflateBack() is passed as the | 778 | The in_desc and out_desc parameters of inflateBack() is passed as the |
| 779 | first parameter of in() and out() respectively when they are called. These | 779 | first parameter of in() and out() respectively when they are called. These |
| 780 | descriptors can be optinally used to pass any information that the caller- | 780 | descriptors can be optionally used to pass any information that the caller- |
| 781 | supplied in() and out() functions need to do their job. | 781 | supplied in() and out() functions need to do their job. |
| 782 | 782 | ||
| 783 | On return, inflateBack() will set strm->next_in and strm->avail_in to | 783 | On return, inflateBack() will set strm->next_in and strm->avail_in to |
