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