2 * gzip.h -- common declarations for all gzip modules
3 * Copyright (C) 1992-1993 Jean-loup Gailly.
4 * Adapted for FreeBSD boot unpacker by Serge Vakulenko.
5 * This is free software; you can redistribute it and/or modify it under the
6 * terms of the GNU General Public License, see the file COPYING.
9 typedef unsigned char uchar;
10 typedef unsigned long ulong;
14 #define STORED 0 /* Compression methods */
17 #define DEFLATED 8 /* methods 3 to 7 reserved */
19 #define INBUFSIZ 0x8000 /* input buffer size */
21 #define OUTBUFSIZ 16384 /* output buffer size */
22 #define OUTBUF_EXTRA 2048 /* required by unlzw() */
24 #define GZIP_MAGIC "\037\213" /* gzip files, 1F 8B */
25 #define OLD_GZIP_MAGIC "\037\236" /* gzip 0.5 = freeze 1.x */
26 #define PKZIP_MAGIC "PK\003\004" /* pkzip files */
27 #define PACK_MAGIC "\037\036" /* packed files */
28 #define LZW_MAGIC "\037\235" /* lzw files, 1F 9D */
31 #define ASCII_FLAG 0x01 /* file probably ascii text */
32 #define CONTINUATION 0x02 /* cont. of multi-part gzip file */
33 #define EXTRA_FIELD 0x04 /* extra field present */
34 #define ORIG_NAME 0x08 /* original file name present */
35 #define COMMENT 0x10 /* file comment present */
36 #define ENCRYPTED 0x20 /* file is encrypted */
37 #define RESERVED 0xC0 /* reserved */
39 /* window size--must be a power of two, and */
40 /* at least 32K for zip's deflate method */
43 extern int method; /* compression method */
45 extern uchar *inbuf; /* input buffer */
46 extern uchar *outbuf; /* output buffer */
47 extern uchar *window; /* Sliding window and suffix table (unlzw) */
49 extern unsigned insize; /* valid bytes in inbuf */
50 extern unsigned inptr; /* index of next byte to be processed in inbuf */
51 extern unsigned outcnt; /* bytes in output buffer */
53 extern int pkzip; /* set for a pkzip file */
54 extern int extended; /* set if extended local header */
55 extern ulong crc; /* shift register contents */
56 extern ulong output_ptr; /* total output bytes */
58 extern void unzip (void);
59 extern void check_zipfile (void);
60 extern void updcrc (uchar *s, unsigned n);
61 extern void clear_bufs (void);
62 extern void fill_inbuf (void);
63 extern void flush_window (void);
64 extern void error (char *m);
66 static inline uchar get_byte ()
70 return (inbuf[inptr++]);
73 static inline void put_char (uchar c)