00001
00002
00003
00004
00005
00006
00007
00008 #ifndef NO_GZIP
00009 # define GUNZIP
00010 #endif
00011
00012 typedef enum {
00013 HEAD,
00014 FLAGS,
00015 TIME,
00016 OS,
00017 EXLEN,
00018 EXTRA,
00019 NAME,
00020 COMMENT,
00021 HCRC,
00022 DICTID,
00023 DICT,
00024 TYPE,
00025 TYPEDO,
00026 STORED,
00027 COPY,
00028 TABLE,
00029 LENLENS,
00030 CODELENS,
00031 LEN,
00032 LENEXT,
00033 DIST,
00034 DISTEXT,
00035 MATCH,
00036 LIT,
00037 CHECK,
00038 LENGTH,
00039 DONE,
00040 BAD,
00041 MEM,
00042 SYNC
00043 } inflate_mode;
00044
00045 struct inflate_state {
00046 inflate_mode mode;
00047 int last;
00048 int wrap;
00049 int havedict;
00050 int flags;
00051 unsigned dmax;
00052 unsigned long check;
00053 unsigned long total;
00054 gz_headerp head;
00055
00056 unsigned wbits;
00057 unsigned wsize;
00058 unsigned whave;
00059 unsigned write;
00060 unsigned char FAR *window;
00061
00062 unsigned long hold;
00063 unsigned bits;
00064
00065 unsigned length;
00066 unsigned offset;
00067
00068 unsigned extra;
00069
00070 code const FAR *lencode;
00071 code const FAR *distcode;
00072 unsigned lenbits;
00073 unsigned distbits;
00074
00075 unsigned ncode;
00076 unsigned nlen;
00077 unsigned ndist;
00078 unsigned have;
00079 code FAR *next;
00080 unsigned short lens[320];
00081 unsigned short work[288];
00082 code codes[ENOUGH];
00083 };