maint: remove lots of obsolete #if...HAVE_* checks
[debian/gzip] / inflate.c
1 /* Inflate deflated data
2
3    Copyright (C) 1997-1999, 2002, 2006, 2009 Free Software Foundation, Inc.
4
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 3, or (at your option)
8    any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program; if not, write to the Free Software Foundation,
17    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
18
19 /* Not copyrighted 1992 by Mark Adler
20    version c10p1, 10 January 1993 */
21
22 /* You can do whatever you like with this source file, though I would
23    prefer that if you modify it and redistribute it that you include
24    comments to that effect with your name and the date.  Thank you.
25    [The history has been moved to the file ChangeLog.]
26  */
27
28 /*
29    Inflate deflated (PKZIP's method 8 compressed) data.  The compression
30    method searches for as much of the current string of bytes (up to a
31    length of 258) in the previous 32K bytes.  If it doesn't find any
32    matches (of at least length 3), it codes the next byte.  Otherwise, it
33    codes the length of the matched string and its distance backwards from
34    the current position.  There is a single Huffman code that codes both
35    single bytes (called "literals") and match lengths.  A second Huffman
36    code codes the distance information, which follows a length code.  Each
37    length or distance code actually represents a base value and a number
38    of "extra" (sometimes zero) bits to get to add to the base value.  At
39    the end of each deflated block is a special end-of-block (EOB) literal/
40    length code.  The decoding process is basically: get a literal/length
41    code; if EOB then done; if a literal, emit the decoded byte; if a
42    length then get the distance and emit the referred-to bytes from the
43    sliding window of previously emitted data.
44
45    There are (currently) three kinds of inflate blocks: stored, fixed, and
46    dynamic.  The compressor deals with some chunk of data at a time, and
47    decides which method to use on a chunk-by-chunk basis.  A chunk might
48    typically be 32K or 64K.  If the chunk is uncompressible, then the
49    "stored" method is used.  In this case, the bytes are simply stored as
50    is, eight bits per byte, with none of the above coding.  The bytes are
51    preceded by a count, since there is no longer an EOB code.
52
53    If the data is compressible, then either the fixed or dynamic methods
54    are used.  In the dynamic method, the compressed data is preceded by
55    an encoding of the literal/length and distance Huffman codes that are
56    to be used to decode this block.  The representation is itself Huffman
57    coded, and so is preceded by a description of that code.  These code
58    descriptions take up a little space, and so for small blocks, there is
59    a predefined set of codes, called the fixed codes.  The fixed method is
60    used if the block codes up smaller that way (usually for quite small
61    chunks), otherwise the dynamic method is used.  In the latter case, the
62    codes are customized to the probabilities in the current block, and so
63    can code it much better than the pre-determined fixed codes.
64
65    The Huffman codes themselves are decoded using a multi-level table
66    lookup, in order to maximize the speed of decoding plus the speed of
67    building the decoding tables.  See the comments below that precede the
68    lbits and dbits tuning parameters.
69  */
70
71
72 /*
73    Notes beyond the 1.93a appnote.txt:
74
75    1. Distance pointers never point before the beginning of the output
76       stream.
77    2. Distance pointers can point back across blocks, up to 32k away.
78    3. There is an implied maximum of 7 bits for the bit length table and
79       15 bits for the actual data.
80    4. If only one code exists, then it is encoded using one bit.  (Zero
81       would be more efficient, but perhaps a little confusing.)  If two
82       codes exist, they are coded using one bit each (0 and 1).
83    5. There is no way of sending zero distance codes--a dummy must be
84       sent if there are none.  (History: a pre 2.0 version of PKZIP would
85       store blocks with no distance codes, but this was discovered to be
86       too harsh a criterion.)  Valid only for 1.93a.  2.04c does allow
87       zero distance codes, which is sent as one code of zero bits in
88       length.
89    6. There are up to 286 literal/length codes.  Code 256 represents the
90       end-of-block.  Note however that the static length tree defines
91       288 codes just to fill out the Huffman codes.  Codes 286 and 287
92       cannot be used though, since there is no length base or extra bits
93       defined for them.  Similarly, there are up to 30 distance codes.
94       However, static trees define 32 codes (all 5 bits) to fill out the
95       Huffman codes, but the last two had better not show up in the data.
96    7. Unzip can check dynamic Huffman blocks for complete code sets.
97       The exception is that a single code would not be complete (see #4).
98    8. The five bits following the block type is really the number of
99       literal codes sent minus 257.
100    9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits
101       (1+6+6).  Therefore, to output three times the length, you output
102       three codes (1+1+1), whereas to output four times the same length,
103       you only need two codes (1+3).  Hmm.
104   10. In the tree reconstruction algorithm, Code = Code + Increment
105       only if BitLength(i) is not zero.  (Pretty obvious.)
106   11. Correction: 4 Bits: # of Bit Length codes - 4     (4 - 19)
107   12. Note: length code 284 can represent 227-258, but length code 285
108       really is 258.  The last length deserves its own, short code
109       since it gets used a lot in very redundant files.  The length
110       258 is special since 258 - 3 (the min match length) is 255.
111   13. The literal/length and distance code bit lengths are read as a
112       single stream of lengths.  It is possible (and advantageous) for
113       a repeat code (16, 17, or 18) to go across the boundary between
114       the two sets of lengths.
115  */
116
117 #include <config.h>
118 #include "tailor.h"
119
120 #include <stdlib.h>
121
122 #include "gzip.h"
123 #define slide window
124
125 /* Huffman code lookup table entry--this entry is four bytes for machines
126    that have 16-bit pointers (e.g. PC's in the small or medium model).
127    Valid extra bits are 0..13.  e == 15 is EOB (end of block), e == 16
128    means that v is a literal, 16 < e < 32 means that v is a pointer to
129    the next table, which codes e - 16 bits, and lastly e == 99 indicates
130    an unused code.  If a code with e == 99 is looked up, this implies an
131    error in the data. */
132 struct huft {
133   uch e;                /* number of extra bits or operation */
134   uch b;                /* number of bits in this code or subcode */
135   union {
136     ush n;              /* literal, length base, or distance base */
137     struct huft *t;     /* pointer to next level of table */
138   } v;
139 };
140
141
142 /* Function prototypes */
143 int huft_build OF((unsigned *, unsigned, unsigned, ush *, ush *,
144                    struct huft **, int *));
145 int huft_free OF((struct huft *));
146 int inflate_codes OF((struct huft *, struct huft *, int, int));
147 int inflate_stored OF((void));
148 int inflate_fixed OF((void));
149 int inflate_dynamic OF((void));
150 int inflate_block OF((int *));
151 int inflate OF((void));
152
153
154 /* The inflate algorithm uses a sliding 32K byte window on the uncompressed
155    stream to find repeated byte strings.  This is implemented here as a
156    circular buffer.  The index is updated simply by incrementing and then
157    and'ing with 0x7fff (32K-1). */
158 /* It is left to other modules to supply the 32K area.  It is assumed
159    to be usable as if it were declared "uch slide[32768];" or as just
160    "uch *slide;" and then malloc'ed in the latter case.  The definition
161    must be in unzip.h, included above. */
162 /* unsigned wp;             current position in slide */
163 #define wp outcnt
164 #define flush_output(w) (wp=(w),flush_window())
165
166 /* Tables for deflate from PKZIP's appnote.txt. */
167 static unsigned border[] = {    /* Order of the bit length code lengths */
168         16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
169 static ush cplens[] = {         /* Copy lengths for literal codes 257..285 */
170         3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
171         35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
172         /* note: see note #13 above about the 258 in this list. */
173 static ush cplext[] = {         /* Extra bits for literal codes 257..285 */
174         0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
175         3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99}; /* 99==invalid */
176 static ush cpdist[] = {         /* Copy offsets for distance codes 0..29 */
177         1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
178         257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
179         8193, 12289, 16385, 24577};
180 static ush cpdext[] = {         /* Extra bits for distance codes */
181         0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
182         7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
183         12, 12, 13, 13};
184
185
186
187 /* Macros for inflate() bit peeking and grabbing.
188    The usage is:
189
190         NEEDBITS(j)
191         x = b & mask_bits[j];
192         DUMPBITS(j)
193
194    where NEEDBITS makes sure that b has at least j bits in it, and
195    DUMPBITS removes the bits from b.  The macros use the variable k
196    for the number of bits in b.  Normally, b and k are register
197    variables for speed, and are initialized at the beginning of a
198    routine that uses these macros from a global bit buffer and count.
199    The macros also use the variable w, which is a cached copy of wp.
200
201    If we assume that EOB will be the longest code, then we will never
202    ask for bits with NEEDBITS that are beyond the end of the stream.
203    So, NEEDBITS should not read any more bytes than are needed to
204    meet the request.  Then no bytes need to be "returned" to the buffer
205    at the end of the last block.
206
207    However, this assumption is not true for fixed blocks--the EOB code
208    is 7 bits, but the other literal/length codes can be 8 or 9 bits.
209    (The EOB code is shorter than other codes because fixed blocks are
210    generally short.  So, while a block always has an EOB, many other
211    literal/length codes have a significantly lower probability of
212    showing up at all.)  However, by making the first table have a
213    lookup of seven bits, the EOB code will be found in that first
214    lookup, and so will not require that too many bits be pulled from
215    the stream.
216  */
217
218 ulg bb;                         /* bit buffer */
219 unsigned bk;                    /* bits in bit buffer */
220
221 ush mask_bits[] = {
222     0x0000,
223     0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
224     0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
225 };
226
227 #define GETBYTE() (inptr < insize ? inbuf[inptr++] : (wp = w, fill_inbuf(0)))
228
229 #ifdef CRYPT
230   uch cc;
231 #  define NEXTBYTE() \
232      (decrypt ? (cc = GETBYTE(), zdecode(cc), cc) : GETBYTE())
233 #else
234 #  define NEXTBYTE()  (uch)GETBYTE()
235 #endif
236 #define NEEDBITS(n) {while(k<(n)){b|=((ulg)NEXTBYTE())<<k;k+=8;}}
237 #define DUMPBITS(n) {b>>=(n);k-=(n);}
238
239
240 /*
241    Huffman code decoding is performed using a multi-level table lookup.
242    The fastest way to decode is to simply build a lookup table whose
243    size is determined by the longest code.  However, the time it takes
244    to build this table can also be a factor if the data being decoded
245    is not very long.  The most common codes are necessarily the
246    shortest codes, so those codes dominate the decoding time, and hence
247    the speed.  The idea is you can have a shorter table that decodes the
248    shorter, more probable codes, and then point to subsidiary tables for
249    the longer codes.  The time it costs to decode the longer codes is
250    then traded against the time it takes to make longer tables.
251
252    This results of this trade are in the variables lbits and dbits
253    below.  lbits is the number of bits the first level table for literal/
254    length codes can decode in one step, and dbits is the same thing for
255    the distance codes.  Subsequent tables are also less than or equal to
256    those sizes.  These values may be adjusted either when all of the
257    codes are shorter than that, in which case the longest code length in
258    bits is used, or when the shortest code is *longer* than the requested
259    table size, in which case the length of the shortest code in bits is
260    used.
261
262    There are two different values for the two tables, since they code a
263    different number of possibilities each.  The literal/length table
264    codes 286 possible values, or in a flat code, a little over eight
265    bits.  The distance table codes 30 possible values, or a little less
266    than five bits, flat.  The optimum values for speed end up being
267    about one bit more than those, so lbits is 8+1 and dbits is 5+1.
268    The optimum values may differ though from machine to machine, and
269    possibly even between compilers.  Your mileage may vary.
270  */
271
272
273 int lbits = 9;          /* bits in base literal/length lookup table */
274 int dbits = 6;          /* bits in base distance lookup table */
275
276
277 /* If BMAX needs to be larger than 16, then h and x[] should be ulg. */
278 #define BMAX 16         /* maximum bit length of any code (16 for explode) */
279 #define N_MAX 288       /* maximum number of codes in any set */
280
281
282 unsigned hufts;         /* track memory usage */
283
284
285 int huft_build(b, n, s, d, e, t, m)
286 unsigned *b;            /* code lengths in bits (all assumed <= BMAX) */
287 unsigned n;             /* number of codes (assumed <= N_MAX) */
288 unsigned s;             /* number of simple-valued codes (0..s-1) */
289 ush *d;                 /* list of base values for non-simple codes */
290 ush *e;                 /* list of extra bits for non-simple codes */
291 struct huft **t;        /* result: starting table */
292 int *m;                 /* maximum lookup bits, returns actual */
293 /* Given a list of code lengths and a maximum table size, make a set of
294    tables to decode that set of codes.  Return zero on success, one if
295    the given code set is incomplete (the tables are still built in this
296    case), two if the input is invalid (all zero length codes or an
297    oversubscribed set of lengths), and three if not enough memory. */
298 {
299   unsigned a;                   /* counter for codes of length k */
300   unsigned c[BMAX+1];           /* bit length count table */
301   unsigned f;                   /* i repeats in table every f entries */
302   int g;                        /* maximum code length */
303   int h;                        /* table level */
304   register unsigned i;          /* counter, current code */
305   register unsigned j;          /* counter */
306   register int k;               /* number of bits in current code */
307   int l;                        /* bits per table (returned in m) */
308   register unsigned *p;         /* pointer into c[], b[], or v[] */
309   register struct huft *q;      /* points to current table */
310   struct huft r;                /* table entry for structure assignment */
311   struct huft *u[BMAX];         /* table stack */
312   unsigned v[N_MAX];            /* values in order of bit length */
313   register int w;               /* bits before this table == (l * h) */
314   unsigned x[BMAX+1];           /* bit offsets, then code stack */
315   unsigned *xp;                 /* pointer into x */
316   int y;                        /* number of dummy codes added */
317   unsigned z;                   /* number of entries in current table */
318
319
320   /* Generate counts for each bit length */
321   memzero(c, sizeof(c));
322   p = b;  i = n;
323   do {
324     Tracecv(*p, (stderr, (n-i >= ' ' && n-i <= '~' ? "%c %d\n" : "0x%x %d\n"),
325             n-i, *p));
326     c[*p]++;                    /* assume all entries <= BMAX */
327     p++;                      /* Can't combine with above line (Solaris bug) */
328   } while (--i);
329   if (c[0] == n)                /* null input--all zero length codes */
330   {
331     q = (struct huft *) malloc (3 * sizeof *q);
332     if (!q)
333       return 3;
334     hufts += 3;
335     q[0].v.t = (struct huft *) NULL;
336     q[1].e = 99;    /* invalid code marker */
337     q[1].b = 1;
338     q[2].e = 99;    /* invalid code marker */
339     q[2].b = 1;
340     *t = q + 1;
341     *m = 1;
342     return 0;
343   }
344
345
346   /* Find minimum and maximum length, bound *m by those */
347   l = *m;
348   for (j = 1; j <= BMAX; j++)
349     if (c[j])
350       break;
351   k = j;                        /* minimum code length */
352   if ((unsigned)l < j)
353     l = j;
354   for (i = BMAX; i; i--)
355     if (c[i])
356       break;
357   g = i;                        /* maximum code length */
358   if ((unsigned)l > i)
359     l = i;
360   *m = l;
361
362
363   /* Adjust last length count to fill out codes, if needed */
364   for (y = 1 << j; j < i; j++, y <<= 1)
365     if ((y -= c[j]) < 0)
366       return 2;                 /* bad input: more codes than bits */
367   if ((y -= c[i]) < 0)
368     return 2;
369   c[i] += y;
370
371
372   /* Generate starting offsets into the value table for each length */
373   x[1] = j = 0;
374   p = c + 1;  xp = x + 2;
375   while (--i) {                 /* note that i == g from above */
376     *xp++ = (j += *p++);
377   }
378
379
380   /* Make a table of values in order of bit lengths */
381   p = b;  i = 0;
382   do {
383     if ((j = *p++) != 0)
384       v[x[j]++] = i;
385   } while (++i < n);
386   n = x[g];                   /* set n to length of v */
387
388
389   /* Generate the Huffman codes and for each, make the table entries */
390   x[0] = i = 0;                 /* first Huffman code is zero */
391   p = v;                        /* grab values in bit order */
392   h = -1;                       /* no tables yet--level -1 */
393   w = -l;                       /* bits decoded == (l * h) */
394   u[0] = (struct huft *)NULL;   /* just to keep compilers happy */
395   q = (struct huft *)NULL;      /* ditto */
396   z = 0;                        /* ditto */
397
398   /* go through the bit lengths (k already is bits in shortest code) */
399   for (; k <= g; k++)
400   {
401     a = c[k];
402     while (a--)
403     {
404       /* here i is the Huffman code of length k bits for value *p */
405       /* make tables up to required level */
406       while (k > w + l)
407       {
408         h++;
409         w += l;                 /* previous table always l bits */
410
411         /* compute minimum size table less than or equal to l bits */
412         z = (z = g - w) > (unsigned)l ? l : z;  /* upper limit on table size */
413         if ((f = 1 << (j = k - w)) > a + 1)     /* try a k-w bit table */
414         {                       /* too few codes for k-w bit table */
415           f -= a + 1;           /* deduct codes from patterns left */
416           xp = c + k;
417           if (j < z)
418             while (++j < z)       /* try smaller tables up to z bits */
419             {
420               if ((f <<= 1) <= *++xp)
421                 break;            /* enough codes to use up j bits */
422               f -= *xp;           /* else deduct codes from patterns */
423             }
424         }
425         z = 1 << j;             /* table entries for j-bit table */
426
427         /* allocate and link in new table */
428         if ((q = (struct huft *)malloc((z + 1)*sizeof(struct huft))) ==
429             (struct huft *)NULL)
430         {
431           if (h)
432             huft_free(u[0]);
433           return 3;             /* not enough memory */
434         }
435         hufts += z + 1;         /* track memory usage */
436         *t = q + 1;             /* link to list for huft_free() */
437         *(t = &(q->v.t)) = (struct huft *)NULL;
438         u[h] = ++q;             /* table starts after link */
439
440         /* connect to last table, if there is one */
441         if (h)
442         {
443           x[h] = i;             /* save pattern for backing up */
444           r.b = (uch)l;         /* bits to dump before this table */
445           r.e = (uch)(16 + j);  /* bits in this table */
446           r.v.t = q;            /* pointer to this table */
447           j = i >> (w - l);     /* (get around Turbo C bug) */
448           u[h-1][j] = r;        /* connect to last table */
449         }
450       }
451
452       /* set up table entry in r */
453       r.b = (uch)(k - w);
454       if (p >= v + n)
455         r.e = 99;               /* out of values--invalid code */
456       else if (*p < s)
457       {
458         r.e = (uch)(*p < 256 ? 16 : 15);    /* 256 is end-of-block code */
459         r.v.n = (ush)(*p);             /* simple code is just the value */
460         p++;                           /* one compiler does not like *p++ */
461       }
462       else
463       {
464         r.e = (uch)e[*p - s];   /* non-simple--look up in lists */
465         r.v.n = d[*p++ - s];
466       }
467
468       /* fill code-like entries with r */
469       f = 1 << (k - w);
470       for (j = i >> w; j < z; j += f)
471         q[j] = r;
472
473       /* backwards increment the k-bit code i */
474       for (j = 1 << (k - 1); i & j; j >>= 1)
475         i ^= j;
476       i ^= j;
477
478       /* backup over finished tables */
479       while ((i & ((1 << w) - 1)) != x[h])
480       {
481         h--;                    /* don't need to update q */
482         w -= l;
483       }
484     }
485   }
486
487
488   /* Return true (1) if we were given an incomplete table */
489   return y != 0 && g != 1;
490 }
491
492
493
494 int huft_free(t)
495 struct huft *t;         /* table to free */
496 /* Free the malloc'ed tables built by huft_build(), which makes a linked
497    list of the tables it made, with the links in a dummy first entry of
498    each table. */
499 {
500   register struct huft *p, *q;
501
502
503   /* Go through linked list, freeing from the malloced (t[-1]) address. */
504   p = t;
505   while (p != (struct huft *)NULL)
506   {
507     q = (--p)->v.t;
508     free(p);
509     p = q;
510   }
511   return 0;
512 }
513
514
515 int inflate_codes(tl, td, bl, bd)
516 struct huft *tl, *td;   /* literal/length and distance decoder tables */
517 int bl, bd;             /* number of bits decoded by tl[] and td[] */
518 /* inflate (decompress) the codes in a deflated (compressed) block.
519    Return an error code or zero if it all goes ok. */
520 {
521   register unsigned e;  /* table entry flag/number of extra bits */
522   unsigned n, d;        /* length and index for copy */
523   unsigned w;           /* current window position */
524   struct huft *t;       /* pointer to table entry */
525   unsigned ml, md;      /* masks for bl and bd bits */
526   register ulg b;       /* bit buffer */
527   register unsigned k;  /* number of bits in bit buffer */
528
529
530   /* make local copies of globals */
531   b = bb;                       /* initialize bit buffer */
532   k = bk;
533   w = wp;                       /* initialize window position */
534
535   /* inflate the coded data */
536   ml = mask_bits[bl];           /* precompute masks for speed */
537   md = mask_bits[bd];
538   for (;;)                      /* do until end of block */
539   {
540     NEEDBITS((unsigned)bl)
541     if ((e = (t = tl + ((unsigned)b & ml))->e) > 16)
542       do {
543         if (e == 99)
544           return 1;
545         DUMPBITS(t->b)
546         e -= 16;
547         NEEDBITS(e)
548       } while ((e = (t = t->v.t + ((unsigned)b & mask_bits[e]))->e) > 16);
549     DUMPBITS(t->b)
550     if (e == 16)                /* then it's a literal */
551     {
552       slide[w++] = (uch)t->v.n;
553       Tracevv((stderr, "%c", slide[w-1]));
554       if (w == WSIZE)
555       {
556         flush_output(w);
557         w = 0;
558       }
559     }
560     else                        /* it's an EOB or a length */
561     {
562       /* exit if end of block */
563       if (e == 15)
564         break;
565
566       /* get length of block to copy */
567       NEEDBITS(e)
568       n = t->v.n + ((unsigned)b & mask_bits[e]);
569       DUMPBITS(e);
570
571       /* decode distance of block to copy */
572       NEEDBITS((unsigned)bd)
573       if ((e = (t = td + ((unsigned)b & md))->e) > 16)
574         do {
575           if (e == 99)
576             return 1;
577           DUMPBITS(t->b)
578           e -= 16;
579           NEEDBITS(e)
580         } while ((e = (t = t->v.t + ((unsigned)b & mask_bits[e]))->e) > 16);
581       DUMPBITS(t->b)
582       NEEDBITS(e)
583       d = w - t->v.n - ((unsigned)b & mask_bits[e]);
584       DUMPBITS(e)
585       Tracevv((stderr,"\\[%d,%d]", w-d, n));
586
587       /* do the copy */
588       do {
589         n -= (e = (e = WSIZE - ((d &= WSIZE-1) > w ? d : w)) > n ? n : e);
590 #if !defined(NOMEMCPY) && !defined(DEBUG)
591         if (w - d >= e)         /* (this test assumes unsigned comparison) */
592         {
593           memcpy(slide + w, slide + d, e);
594           w += e;
595           d += e;
596         }
597         else                      /* do it slow to avoid memcpy() overlap */
598 #endif /* !NOMEMCPY */
599           do {
600             slide[w++] = slide[d++];
601             Tracevv((stderr, "%c", slide[w-1]));
602           } while (--e);
603         if (w == WSIZE)
604         {
605           flush_output(w);
606           w = 0;
607         }
608       } while (n);
609     }
610   }
611
612
613   /* restore the globals from the locals */
614   wp = w;                       /* restore global window pointer */
615   bb = b;                       /* restore global bit buffer */
616   bk = k;
617
618   /* done */
619   return 0;
620 }
621
622
623
624 int inflate_stored()
625 /* "decompress" an inflated type 0 (stored) block. */
626 {
627   unsigned n;           /* number of bytes in block */
628   unsigned w;           /* current window position */
629   register ulg b;       /* bit buffer */
630   register unsigned k;  /* number of bits in bit buffer */
631
632
633   /* make local copies of globals */
634   b = bb;                       /* initialize bit buffer */
635   k = bk;
636   w = wp;                       /* initialize window position */
637
638
639   /* go to byte boundary */
640   n = k & 7;
641   DUMPBITS(n);
642
643
644   /* get the length and its complement */
645   NEEDBITS(16)
646   n = ((unsigned)b & 0xffff);
647   DUMPBITS(16)
648   NEEDBITS(16)
649   if (n != (unsigned)((~b) & 0xffff))
650     return 1;                   /* error in compressed data */
651   DUMPBITS(16)
652
653
654   /* read and output the compressed data */
655   while (n--)
656   {
657     NEEDBITS(8)
658     slide[w++] = (uch)b;
659     if (w == WSIZE)
660     {
661       flush_output(w);
662       w = 0;
663     }
664     DUMPBITS(8)
665   }
666
667
668   /* restore the globals from the locals */
669   wp = w;                       /* restore global window pointer */
670   bb = b;                       /* restore global bit buffer */
671   bk = k;
672   return 0;
673 }
674
675
676
677 int inflate_fixed()
678 /* decompress an inflated type 1 (fixed Huffman codes) block.  We should
679    either replace this with a custom decoder, or at least precompute the
680    Huffman tables. */
681 {
682   int i;                /* temporary variable */
683   struct huft *tl;      /* literal/length code table */
684   struct huft *td;      /* distance code table */
685   int bl;               /* lookup bits for tl */
686   int bd;               /* lookup bits for td */
687   unsigned l[288];      /* length list for huft_build */
688
689
690   /* set up literal table */
691   for (i = 0; i < 144; i++)
692     l[i] = 8;
693   for (; i < 256; i++)
694     l[i] = 9;
695   for (; i < 280; i++)
696     l[i] = 7;
697   for (; i < 288; i++)          /* make a complete, but wrong code set */
698     l[i] = 8;
699   bl = 7;
700   if ((i = huft_build(l, 288, 257, cplens, cplext, &tl, &bl)) != 0)
701     return i;
702
703
704   /* set up distance table */
705   for (i = 0; i < 30; i++)      /* make an incomplete code set */
706     l[i] = 5;
707   bd = 5;
708   if ((i = huft_build(l, 30, 0, cpdist, cpdext, &td, &bd)) > 1)
709   {
710     huft_free(tl);
711     return i;
712   }
713
714
715   /* decompress until an end-of-block code */
716   if (inflate_codes(tl, td, bl, bd))
717     return 1;
718
719
720   /* free the decoding tables, return */
721   huft_free(tl);
722   huft_free(td);
723   return 0;
724 }
725
726
727
728 int inflate_dynamic()
729 /* decompress an inflated type 2 (dynamic Huffman codes) block. */
730 {
731   int i;                /* temporary variables */
732   unsigned j;
733   unsigned l;           /* last length */
734   unsigned m;           /* mask for bit lengths table */
735   unsigned n;           /* number of lengths to get */
736   unsigned w;           /* current window position */
737   struct huft *tl;      /* literal/length code table */
738   struct huft *td;      /* distance code table */
739   int bl;               /* lookup bits for tl */
740   int bd;               /* lookup bits for td */
741   unsigned nb;          /* number of bit length codes */
742   unsigned nl;          /* number of literal/length codes */
743   unsigned nd;          /* number of distance codes */
744 #ifdef PKZIP_BUG_WORKAROUND
745   unsigned ll[288+32];  /* literal/length and distance code lengths */
746 #else
747   unsigned ll[286+30];  /* literal/length and distance code lengths */
748 #endif
749   register ulg b;       /* bit buffer */
750   register unsigned k;  /* number of bits in bit buffer */
751
752
753   /* make local bit buffer */
754   b = bb;
755   k = bk;
756   w = wp;
757
758
759   /* read in table lengths */
760   NEEDBITS(5)
761   nl = 257 + ((unsigned)b & 0x1f);      /* number of literal/length codes */
762   DUMPBITS(5)
763   NEEDBITS(5)
764   nd = 1 + ((unsigned)b & 0x1f);        /* number of distance codes */
765   DUMPBITS(5)
766   NEEDBITS(4)
767   nb = 4 + ((unsigned)b & 0xf);         /* number of bit length codes */
768   DUMPBITS(4)
769 #ifdef PKZIP_BUG_WORKAROUND
770   if (nl > 288 || nd > 32)
771 #else
772   if (nl > 286 || nd > 30)
773 #endif
774     return 1;                   /* bad lengths */
775
776
777   /* read in bit-length-code lengths */
778   for (j = 0; j < nb; j++)
779   {
780     NEEDBITS(3)
781     ll[border[j]] = (unsigned)b & 7;
782     DUMPBITS(3)
783   }
784   for (; j < 19; j++)
785     ll[border[j]] = 0;
786
787
788   /* build decoding table for trees--single level, 7 bit lookup */
789   bl = 7;
790   if ((i = huft_build(ll, 19, 19, NULL, NULL, &tl, &bl)) != 0)
791   {
792     if (i == 1)
793       huft_free(tl);
794     return i;                   /* incomplete code set */
795   }
796
797   if (tl == NULL)               /* Grrrhhh */
798         return 2;
799
800   /* read in literal and distance code lengths */
801   n = nl + nd;
802   m = mask_bits[bl];
803   i = l = 0;
804   while ((unsigned)i < n)
805   {
806     NEEDBITS((unsigned)bl)
807     j = (td = tl + ((unsigned)b & m))->b;
808     DUMPBITS(j)
809     j = td->v.n;
810     if (j < 16)                 /* length of code in bits (0..15) */
811       ll[i++] = l = j;          /* save last length in l */
812     else if (j == 16)           /* repeat last length 3 to 6 times */
813     {
814       NEEDBITS(2)
815       j = 3 + ((unsigned)b & 3);
816       DUMPBITS(2)
817       if ((unsigned)i + j > n)
818         return 1;
819       while (j--)
820         ll[i++] = l;
821     }
822     else if (j == 17)           /* 3 to 10 zero length codes */
823     {
824       NEEDBITS(3)
825       j = 3 + ((unsigned)b & 7);
826       DUMPBITS(3)
827       if ((unsigned)i + j > n)
828         return 1;
829       while (j--)
830         ll[i++] = 0;
831       l = 0;
832     }
833     else                        /* j == 18: 11 to 138 zero length codes */
834     {
835       NEEDBITS(7)
836       j = 11 + ((unsigned)b & 0x7f);
837       DUMPBITS(7)
838       if ((unsigned)i + j > n)
839         return 1;
840       while (j--)
841         ll[i++] = 0;
842       l = 0;
843     }
844   }
845
846
847   /* free decoding table for trees */
848   huft_free(tl);
849
850
851   /* restore the global bit buffer */
852   bb = b;
853   bk = k;
854
855
856   /* build the decoding tables for literal/length and distance codes */
857   bl = lbits;
858   if ((i = huft_build(ll, nl, 257, cplens, cplext, &tl, &bl)) != 0)
859   {
860     if (i == 1) {
861       Trace ((stderr, " incomplete literal tree\n"));
862       huft_free(tl);
863     }
864     return i;                   /* incomplete code set */
865   }
866   bd = dbits;
867   if ((i = huft_build(ll + nl, nd, 0, cpdist, cpdext, &td, &bd)) != 0)
868   {
869     if (i == 1) {
870       Trace ((stderr, " incomplete distance tree\n"));
871 #ifdef PKZIP_BUG_WORKAROUND
872       i = 0;
873     }
874 #else
875       huft_free(td);
876     }
877     huft_free(tl);
878     return i;                   /* incomplete code set */
879 #endif
880   }
881
882
883   {
884     /* decompress until an end-of-block code */
885     int err = inflate_codes(tl, td, bl, bd) ? 1 : 0;
886
887     /* free the decoding tables */
888     huft_free(tl);
889     huft_free(td);
890
891     return err;
892   }
893 }
894
895
896
897 int inflate_block(e)
898 int *e;                 /* last block flag */
899 /* decompress an inflated block */
900 {
901   unsigned t;           /* block type */
902   unsigned w;           /* current window position */
903   register ulg b;       /* bit buffer */
904   register unsigned k;  /* number of bits in bit buffer */
905
906
907   /* make local bit buffer */
908   b = bb;
909   k = bk;
910   w = wp;
911
912
913   /* read in last block bit */
914   NEEDBITS(1)
915   *e = (int)b & 1;
916   DUMPBITS(1)
917
918
919   /* read in block type */
920   NEEDBITS(2)
921   t = (unsigned)b & 3;
922   DUMPBITS(2)
923
924
925   /* restore the global bit buffer */
926   bb = b;
927   bk = k;
928
929
930   /* inflate that block type */
931   if (t == 2)
932     return inflate_dynamic();
933   if (t == 0)
934     return inflate_stored();
935   if (t == 1)
936     return inflate_fixed();
937
938
939   /* bad block type */
940   return 2;
941 }
942
943
944
945 int inflate()
946 /* decompress an inflated entry */
947 {
948   int e;                /* last block flag */
949   int r;                /* result code */
950   unsigned h;           /* maximum struct huft's malloc'ed */
951
952
953   /* initialize window, bit buffer */
954   wp = 0;
955   bk = 0;
956   bb = 0;
957
958
959   /* decompress until the last block */
960   h = 0;
961   do {
962     hufts = 0;
963     if ((r = inflate_block(&e)) != 0)
964       return r;
965     if (hufts > h)
966       h = hufts;
967   } while (!e);
968
969   /* Undo too much lookahead. The next read will be byte aligned so we
970    * can discard unused bits in the last meaningful byte.
971    */
972   while (bk >= 8) {
973     bk -= 8;
974     inptr--;
975   }
976
977   /* flush out slide */
978   flush_output(wp);
979
980
981   /* return success */
982   Trace ((stderr, "<%u> ", h));
983   return 0;
984 }