blob: cbe2e4919feaf65cf0f37944c8cb144c98795106 [file] [log] [blame]
*** infback.c Mon Aug 11 16:48:06 2003
--- infback9.c Mon Sep 8 21:22:46 2003
***************
*** 1,19 ****
! /* infback.c -- inflate using a call-back interface
* Copyright (C) 1995-2003 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
- /*
- This code is largely copied from inflate.c. Normally either infback.o or
- inflate.o would be linked into an application--not both. The interface
- with inffast.c is retained so that optimized assembler-coded versions of
- inflate_fast() can be used with either inflate.c or infback.c.
- */
-
#include "zutil.h"
! #include "inftrees.h"
#include "inflate.h"
- #include "inffast.h"
/* function prototypes */
local void fixedtables OF((struct inflate_state FAR *state));
--- 1,12 ----
! /* infback9.c -- inflate deflate64 data using a call-back interface
* Copyright (C) 1995-2003 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "zutil.h"
! #include "infback9.h"
! #include "inftree9.h"
#include "inflate.h"
/* function prototypes */
local void fixedtables OF((struct inflate_state FAR *state));
***************
*** 22,33 ****
strm provides memory allocation functions in zalloc and zfree, or
Z_NULL to use the library memory allocation functions.
! windowBits is in the range 8..15, and window is a user-supplied
! window and output buffer that is 2**windowBits bytes.
*/
! int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size)
z_stream FAR *strm;
- int windowBits;
unsigned char FAR *window;
const char *version;
int stream_size;
--- 15,24 ----
strm provides memory allocation functions in zalloc and zfree, or
Z_NULL to use the library memory allocation functions.
! window is a user-supplied window and output buffer that is 64K bytes.
*/
! int ZEXPORT inflateBack9Init_(strm, window, version, stream_size)
z_stream FAR *strm;
unsigned char FAR *window;
const char *version;
int stream_size;
***************
*** 37,44 ****
if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
stream_size != (int)(sizeof(z_stream)))
return Z_VERSION_ERROR;
! if (strm == Z_NULL || window == Z_NULL ||
! windowBits < 8 || windowBits > 15)
return Z_STREAM_ERROR;
strm->msg = Z_NULL; /* in case we return an error */
if (strm->zalloc == (alloc_func)0) {
--- 28,34 ----
if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
stream_size != (int)(sizeof(z_stream)))
return Z_VERSION_ERROR;
! if (strm == Z_NULL || window == Z_NULL)
return Z_STREAM_ERROR;
strm->msg = Z_NULL; /* in case we return an error */
if (strm->zalloc == (alloc_func)0) {
***************
*** 51,58 ****
if (state == Z_NULL) return Z_MEM_ERROR;
Tracev((stderr, "inflate: allocated\n"));
strm->state = (voidpf)state;
! state->wbits = windowBits;
! state->wsize = 1U << windowBits;
state->window = window;
state->write = 0;
state->whave = 0;
--- 41,48 ----
if (state == Z_NULL) return Z_MEM_ERROR;
Tracev((stderr, "inflate: allocated\n"));
strm->state = (voidpf)state;
! state->wbits = 16;
! state->wsize = 1U << 16;
state->window = window;
state->write = 0;
state->whave = 0;
***************
*** 91,110 ****
next = fixed;
lenfix = next;
bits = 9;
! inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work);
/* distance table */
sym = 0;
while (sym < 32) state->lens[sym++] = 5;
distfix = next;
bits = 5;
! inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work);
/* do this just once */
virgin = 0;
}
#else /* !BUILDFIXED */
! # include "inffixed.h"
#endif /* BUILDFIXED */
state->lencode = lenfix;
state->lenbits = 9;
--- 81,100 ----
next = fixed;
lenfix = next;
bits = 9;
! inflate_table9(LENS, state->lens, 288, &(next), &(bits), state->work);
/* distance table */
sym = 0;
while (sym < 32) state->lens[sym++] = 5;
distfix = next;
bits = 5;
! inflate_table9(DISTS, state->lens, 32, &(next), &(bits), state->work);
/* do this just once */
virgin = 0;
}
#else /* !BUILDFIXED */
! # include "inffix9.h"
#endif /* BUILDFIXED */
state->lencode = lenfix;
state->lenbits = 9;
***************
*** 114,141 ****
/* Macros for inflateBack(): */
- /* Load returned state from inflate_fast() */
- #define LOAD() \
- do { \
- put = strm->next_out; \
- left = strm->avail_out; \
- next = strm->next_in; \
- have = strm->avail_in; \
- hold = state->hold; \
- bits = state->bits; \
- } while (0)
-
- /* Set state from registers for inflate_fast() */
- #define RESTORE() \
- do { \
- strm->next_out = put; \
- strm->avail_out = left; \
- strm->next_in = next; \
- strm->avail_in = have; \
- state->hold = hold; \
- state->bits = bits; \
- } while (0)
-
/* Clear the input bit accumulator */
#define INITBITS() \
do { \
--- 104,109 ----
***************
*** 237,243 ****
inflateBack() can also return Z_STREAM_ERROR if the input parameters
are not correct, i.e. strm is Z_NULL or the state was not initialized.
*/
! int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc)
z_stream FAR *strm;
in_func in;
void FAR *in_desc;
--- 205,211 ----
inflateBack() can also return Z_STREAM_ERROR if the input parameters
are not correct, i.e. strm is Z_NULL or the state was not initialized.
*/
! int ZEXPORT inflateBack9(strm, in, in_desc, out, out_desc)
z_stream FAR *strm;
in_func in;
void FAR *in_desc;
***************
*** 354,366 ****
DROPBITS(5);
state->ncode = BITS(4) + 4;
DROPBITS(4);
! #ifndef PKZIP_BUG_WORKAROUND
! if (state->nlen > 286 || state->ndist > 30) {
! strm->msg = (char *)"too many length or distance symbols";
state->mode = BAD;
break;
}
- #endif
Tracev((stderr, "inflate: table sizes ok\n"));
/* get code length code lengths (not a typo) */
--- 322,332 ----
DROPBITS(5);
state->ncode = BITS(4) + 4;
DROPBITS(4);
! if (state->nlen > 286) {
! strm->msg = (char *)"too many length symbols";
state->mode = BAD;
break;
}
Tracev((stderr, "inflate: table sizes ok\n"));
/* get code length code lengths (not a typo) */
***************
*** 375,381 ****
state->next = state->codes;
state->lencode = (code const FAR *)(state->next);
state->lenbits = 7;
! ret = inflate_table(CODES, state->lens, 19, &(state->next),
&(state->lenbits), state->work);
if (ret) {
strm->msg = (char *)"invalid code lengths set";
--- 341,347 ----
state->next = state->codes;
state->lencode = (code const FAR *)(state->next);
state->lenbits = 7;
! ret = inflate_table9(CODES, state->lens, 19, &(state->next),
&(state->lenbits), state->work);
if (ret) {
strm->msg = (char *)"invalid code lengths set";
***************
*** 438,445 ****
state->next = state->codes;
state->lencode = (code const FAR *)(state->next);
state->lenbits = 9;
! ret = inflate_table(LENS, state->lens, state->nlen, &(state->next),
! &(state->lenbits), state->work);
if (ret) {
strm->msg = (char *)"invalid literal/lengths set";
state->mode = BAD;
--- 404,411 ----
state->next = state->codes;
state->lencode = (code const FAR *)(state->next);
state->lenbits = 9;
! ret = inflate_table9(LENS, state->lens, state->nlen,
! &(state->next), &(state->lenbits), state->work);
if (ret) {
strm->msg = (char *)"invalid literal/lengths set";
state->mode = BAD;
***************
*** 447,454 ****
}
state->distcode = (code const FAR *)(state->next);
state->distbits = 6;
! ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist,
! &(state->next), &(state->distbits), state->work);
if (ret) {
strm->msg = (char *)"invalid distances set";
state->mode = BAD;
--- 413,421 ----
}
state->distcode = (code const FAR *)(state->next);
state->distbits = 6;
! ret = inflate_table9(DISTS, state->lens + state->nlen,
! state->ndist, &(state->next), &(state->distbits),
! state->work);
if (ret) {
strm->msg = (char *)"invalid distances set";
state->mode = BAD;
***************
*** 458,473 ****
state->mode = LEN;
case LEN:
- /* use inflate_fast() if we have enough input and output */
- if (have >= 6 && left >= 258) {
- RESTORE();
- if (state->whave < state->wsize)
- state->whave = state->wsize - left;
- inflate_fast(strm, state->wsize);
- LOAD();
- break;
- }
-
/* get a literal, length, or end-of-block code */
for (;;) {
this = state->lencode[BITS(state->lenbits)];
--- 425,430 ----
***************
*** 607,613 ****
return ret;
}
! int ZEXPORT inflateBackEnd(strm)
z_stream FAR *strm;
{
if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
--- 564,570 ----
return ret;
}
! int ZEXPORT inflateBack9End(strm)
z_stream FAR *strm;
{
if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
*** inftrees.c Sun Sep 7 10:59:10 2003
--- inftree9.c Mon Sep 8 20:54:36 2003
***************
*** 1,15 ****
! /* inftrees.c -- generate Huffman trees for efficient decoding
* Copyright (C) 1995-2003 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "zutil.h"
! #include "inftrees.h"
#define MAXBITS 15
! const char inflate_copyright[] =
! " inflate 1.2.0.5 Copyright 1995-2003 Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
--- 1,15 ----
! /* inftree9.c -- generate Huffman trees for efficient decoding
* Copyright (C) 1995-2003 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "zutil.h"
! #include "inftree9.h"
#define MAXBITS 15
! const char inflate9_copyright[] =
! " inflate9 1.2.0.5 Copyright 1995-2003 Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
***************
*** 29,35 ****
table index bits. It will differ if the request is greater than the
longest code or if it is less than the shortest code.
*/
! int inflate_table(type, lens, codes, table, bits, work)
codetype type;
unsigned short FAR *lens;
unsigned codes;
--- 29,35 ----
table index bits. It will differ if the request is greater than the
longest code or if it is less than the shortest code.
*/
! int inflate_table9(type, lens, codes, table, bits, work)
codetype type;
unsigned short FAR *lens;
unsigned codes;
***************
*** 59,76 ****
unsigned short offs[MAXBITS+1]; /* offsets in table for each length */
static const unsigned short lbase[31] = { /* Length codes 257..285 base */
3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
! 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
static const unsigned short lext[31] = { /* Length codes 257..285 extra */
16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
! 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 192, 78};
! static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
! 8193, 12289, 16385, 24577, 0, 0};
! static const unsigned short dext[32] = { /* Distance codes 0..29 extra */
16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
! 28, 28, 29, 29, 64, 64};
/*
Process a set of code lengths to create a canonical Huffman code. The
--- 59,76 ----
unsigned short offs[MAXBITS+1]; /* offsets in table for each length */
static const unsigned short lbase[31] = { /* Length codes 257..285 base */
3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
! 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 3, 0, 0};
static const unsigned short lext[31] = { /* Length codes 257..285 extra */
16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
! 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 32, 192, 78};
! static const unsigned short dbase[32] = { /* Distance codes 0..31 base */
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
! 8193, 12289, 16385, 24577, 32769, 49153};
! static const unsigned short dext[32] = { /* Distance codes 0..31 extra */
16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
! 28, 28, 29, 29, 30, 30};
/*
Process a set of code lengths to create a canonical Huffman code. The
*** inftrees.h Sun Aug 10 15:15:50 2003
--- inftree9.h Mon Sep 8 20:54:51 2003
***************
*** 1,4 ****
! /* inftrees.h -- header to use inftrees.c
* Copyright (C) 1995-2003 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
--- 1,4 ----
! /* inftree9.h -- header to use inftree9.c
* Copyright (C) 1995-2003 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
***************
*** 50,55 ****
DISTS
} codetype;
! extern int inflate_table OF((codetype type, unsigned short FAR *lens,
unsigned codes, code FAR * FAR *table,
unsigned FAR *bits, unsigned short FAR *work));
--- 50,55 ----
DISTS
} codetype;
! extern int inflate_table9 OF((codetype type, unsigned short FAR *lens,
unsigned codes, code FAR * FAR *table,
unsigned FAR *bits, unsigned short FAR *work));