1.1 --- a/compiler-init/zlib/inflate.h Sat Jul 15 05:02:38 2006 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,115 +0,0 @@
1.4 -/* inflate.h -- internal inflate state definition
1.5 - * Copyright (C) 1995-2004 Mark Adler
1.6 - * For conditions of distribution and use, see copyright notice in zlib.h
1.7 - */
1.8 -
1.9 -/* WARNING: this file should *not* be used by applications. It is
1.10 - part of the implementation of the compression library and is
1.11 - subject to change. Applications should only use zlib.h.
1.12 - */
1.13 -
1.14 -/* define NO_GZIP when compiling if you want to disable gzip header and
1.15 - trailer decoding by inflate(). NO_GZIP would be used to avoid linking in
1.16 - the crc code when it is not needed. For shared libraries, gzip decoding
1.17 - should be left enabled. */
1.18 -#ifndef NO_GZIP
1.19 -# define GUNZIP
1.20 -#endif
1.21 -
1.22 -/* Possible inflate modes between inflate() calls */
1.23 -typedef enum {
1.24 - HEAD, /* i: waiting for magic header */
1.25 - FLAGS, /* i: waiting for method and flags (gzip) */
1.26 - TIME, /* i: waiting for modification time (gzip) */
1.27 - OS, /* i: waiting for extra flags and operating system (gzip) */
1.28 - EXLEN, /* i: waiting for extra length (gzip) */
1.29 - EXTRA, /* i: waiting for extra bytes (gzip) */
1.30 - NAME, /* i: waiting for end of file name (gzip) */
1.31 - COMMENT, /* i: waiting for end of comment (gzip) */
1.32 - HCRC, /* i: waiting for header crc (gzip) */
1.33 - DICTID, /* i: waiting for dictionary check value */
1.34 - DICT, /* waiting for inflateSetDictionary() call */
1.35 - TYPE, /* i: waiting for type bits, including last-flag bit */
1.36 - TYPEDO, /* i: same, but skip check to exit inflate on new block */
1.37 - STORED, /* i: waiting for stored size (length and complement) */
1.38 - COPY, /* i/o: waiting for input or output to copy stored block */
1.39 - TABLE, /* i: waiting for dynamic block table lengths */
1.40 - LENLENS, /* i: waiting for code length code lengths */
1.41 - CODELENS, /* i: waiting for length/lit and distance code lengths */
1.42 - LEN, /* i: waiting for length/lit code */
1.43 - LENEXT, /* i: waiting for length extra bits */
1.44 - DIST, /* i: waiting for distance code */
1.45 - DISTEXT, /* i: waiting for distance extra bits */
1.46 - MATCH, /* o: waiting for output space to copy string */
1.47 - LIT, /* o: waiting for output space to write literal */
1.48 - CHECK, /* i: waiting for 32-bit check value */
1.49 - LENGTH, /* i: waiting for 32-bit length (gzip) */
1.50 - DONE, /* finished check, done -- remain here until reset */
1.51 - BAD, /* got a data error -- remain here until reset */
1.52 - MEM, /* got an inflate() memory error -- remain here until reset */
1.53 - SYNC /* looking for synchronization bytes to restart inflate() */
1.54 -} inflate_mode;
1.55 -
1.56 -/*
1.57 - State transitions between above modes -
1.58 -
1.59 - (most modes can go to the BAD or MEM mode -- not shown for clarity)
1.60 -
1.61 - Process header:
1.62 - HEAD -> (gzip) or (zlib)
1.63 - (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME
1.64 - NAME -> COMMENT -> HCRC -> TYPE
1.65 - (zlib) -> DICTID or TYPE
1.66 - DICTID -> DICT -> TYPE
1.67 - Read deflate blocks:
1.68 - TYPE -> STORED or TABLE or LEN or CHECK
1.69 - STORED -> COPY -> TYPE
1.70 - TABLE -> LENLENS -> CODELENS -> LEN
1.71 - Read deflate codes:
1.72 - LEN -> LENEXT or LIT or TYPE
1.73 - LENEXT -> DIST -> DISTEXT -> MATCH -> LEN
1.74 - LIT -> LEN
1.75 - Process trailer:
1.76 - CHECK -> LENGTH -> DONE
1.77 - */
1.78 -
1.79 -/* state maintained between inflate() calls. Approximately 7K bytes. */
1.80 -struct inflate_state {
1.81 - inflate_mode mode; /* current inflate mode */
1.82 - int last; /* true if processing last block */
1.83 - int wrap; /* bit 0 true for zlib, bit 1 true for gzip */
1.84 - int havedict; /* true if dictionary provided */
1.85 - int flags; /* gzip header method and flags (0 if zlib) */
1.86 - unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */
1.87 - unsigned long check; /* protected copy of check value */
1.88 - unsigned long total; /* protected copy of output count */
1.89 - gz_headerp head; /* where to save gzip header information */
1.90 - /* sliding window */
1.91 - unsigned wbits; /* log base 2 of requested window size */
1.92 - unsigned wsize; /* window size or zero if not using window */
1.93 - unsigned whave; /* valid bytes in the window */
1.94 - unsigned write; /* window write index */
1.95 - unsigned char FAR *window; /* allocated sliding window, if needed */
1.96 - /* bit accumulator */
1.97 - unsigned long hold; /* input bit accumulator */
1.98 - unsigned bits; /* number of bits in "in" */
1.99 - /* for string and stored block copying */
1.100 - unsigned length; /* literal or length of data to copy */
1.101 - unsigned offset; /* distance back to copy string from */
1.102 - /* for table and code decoding */
1.103 - unsigned extra; /* extra bits needed */
1.104 - /* fixed and dynamic code tables */
1.105 - code const FAR *lencode; /* starting table for length/literal codes */
1.106 - code const FAR *distcode; /* starting table for distance codes */
1.107 - unsigned lenbits; /* index bits for lencode */
1.108 - unsigned distbits; /* index bits for distcode */
1.109 - /* dynamic table building */
1.110 - unsigned ncode; /* number of code length code lengths */
1.111 - unsigned nlen; /* number of length code lengths */
1.112 - unsigned ndist; /* number of distance code lengths */
1.113 - unsigned have; /* number of code lengths in lens[] */
1.114 - code FAR *next; /* next available space in codes[] */
1.115 - unsigned short lens[320]; /* temporary storage for code lengths */
1.116 - unsigned short work[288]; /* work area for code table building */
1.117 - code codes[ENOUGH]; /* space for code tables */
1.118 -};