Go to the SVN repository for this file.
1 /* inflate.h -- internal inflate state definition 2 * Copyright (C) 1995-2019 Mark Adler 3 * For conditions of distribution and use, see copyright notice in zlib.h 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. 11 /* define NO_GZIP when compiling if you want to disable gzip header and 12 trailer decoding by inflate(). NO_GZIP would be used to avoid linking in 13 the crc code when it is not needed. For shared libraries, gzip decoding 14 should be left enabled. */ 19 /* Possible inflate modes between inflate() calls */ 21 HEAD= 16180,
/* i: waiting for magic header */ 22 FLAGS,
/* i: waiting for method and flags (gzip) */ 23 TIME,
/* i: waiting for modification time (gzip) */ 24 OS,
/* i: waiting for extra flags and operating system (gzip) */ 25 EXLEN,
/* i: waiting for extra length (gzip) */ 26 EXTRA,
/* i: waiting for extra bytes (gzip) */ 27 NAME,
/* i: waiting for end of file name (gzip) */ 28 COMMENT,
/* i: waiting for end of comment (gzip) */ 29 HCRC,
/* i: waiting for header crc (gzip) */ 30 DICTID,
/* i: waiting for dictionary check value */ 31 DICT,
/* waiting for inflateSetDictionary() call */ 32 TYPE,
/* i: waiting for type bits, including last-flag bit */ 33 TYPEDO,
/* i: same, but skip check to exit inflate on new block */ 34 STORED,
/* i: waiting for stored size (length and complement) */ 35 COPY_,
/* i/o: same as COPY below, but only first time in */ 36 COPY,
/* i/o: waiting for input or output to copy stored block */ 37 TABLE,
/* i: waiting for dynamic block table lengths */ 38 LENLENS,
/* i: waiting for code length code lengths */ 39 CODELENS,
/* i: waiting for length/lit and distance code lengths */ 40 LEN_,
/* i: same as LEN below, but only first time in */ 41 LEN,
/* i: waiting for length/lit/eob code */ 42 LENEXT,
/* i: waiting for length extra bits */ 43 DIST,
/* i: waiting for distance code */ 44 DISTEXT,
/* i: waiting for distance extra bits */ 45 MATCH,
/* o: waiting for output space to copy string */ 46 LIT,
/* o: waiting for output space to write literal */ 47 CHECK,
/* i: waiting for 32-bit check value */ 48 LENGTH,
/* i: waiting for 32-bit length (gzip) */ 49 DONE,
/* finished check, done -- remain here until reset */ 50 BAD,
/* got a data error -- remain here until reset */ 51 MEM,
/* got an inflate() memory error -- remain here until reset */ 52 SYNC /* looking for synchronization bytes to restart inflate() */ 56 State transitions between above modes - 58 (most modes can go to BAD or MEM on error -- not shown for clarity) 61 HEAD -> (gzip) or (zlib) or (raw) 62 (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT -> 64 (zlib) -> DICTID or TYPE 65 DICTID -> DICT -> TYPE 68 TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK 69 STORED -> COPY_ -> COPY -> TYPE 70 TABLE -> LENLENS -> CODELENS -> LEN_ 72 Read deflate codes in fixed or dynamic block: 73 LEN -> LENEXT or LIT or TYPE 74 LENEXT -> DIST -> DISTEXT -> MATCH -> LEN 77 CHECK -> LENGTH -> DONE 80 /* State maintained between inflate() calls -- approximately 7K bytes, not 81 including the allocated sliding window, which is up to 32K bytes. */ 85 int last;
/* true if processing last block */ 86 int wrap;
/* bit 0 true for zlib, bit 1 true for gzip, 87 bit 2 true to validate check value */ 88 int havedict;
/* true if dictionary provided */ 89 int flags;
/* gzip header method and flags, 0 if zlib, or 90 -1 if raw or no header yet */ 91 unsigned dmax;
/* zlib header max distance (INFLATE_STRICT) */ 92 unsigned long check;
/* protected copy of check value */ 93 unsigned long total;
/* protected copy of output count */ 96 unsigned wbits;
/* log base 2 of requested window size */ 97 unsigned wsize;
/* window size or zero if not using window */ 98 unsigned whave;
/* valid bytes in the window */ 99 unsigned wnext;
/* window write index */ 100 unsigned char FAR*
window;
/* allocated sliding window, if needed */ 101 /* bit accumulator */ 102 unsigned long hold;
/* input bit accumulator */ 103 unsigned bits;
/* number of bits in "in" */ 104 /* for string and stored block copying */ 105 unsigned length;
/* literal or length of data to copy */ 106 unsigned offset;
/* distance back to copy string from */ 107 /* for table and code decoding */ 108 unsigned extra;
/* extra bits needed */ 109 /* fixed and dynamic code tables */ 112 unsigned lenbits;
/* index bits for lencode */ 114 /* dynamic table building */ 115 unsigned ncode;
/* number of code length code lengths */ 116 unsigned nlen;
/* number of length code lengths */ 117 unsigned ndist;
/* number of distance code lengths */ 118 unsigned have;
/* number of code lengths in lens[] */ 120 unsigned short lens[320];
/* temporary storage for code lengths */ 121 unsigned short work[288];
/* work area for code table building */ 123 int sane;
/* if false, allow invalid distance too far */ 124 int back;
/* bits back of last unprocessed length/lit */ 125 unsigned was;
/* initial length of match */unsigned char FAR * window
code const FAR * distcode
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4