#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
|
#define | get_char() get_byte() |
|
#define | OF(args) args |
|
#define | memzero(s, n) memset ((voidp)(s), 0, (n)) |
|
#define | MINZIP(a, b) ((a) <= (b) ? (a) : (b)) |
|
#define | OK 0 |
|
#define | ERROR 1 |
|
#define | COMPRESSED 1 |
|
#define | DEFLATED 8 |
|
#define | INBUFSIZ 0x8000 /* input buffer size */ |
|
#define | INBUF_EXTRA 64 /* required by unlzw() */ |
|
#define | OUTBUFSIZ 16384 /* output buffer size */ |
|
#define | OUTBUF_EXTRA 2048 /* required by unlzw() */ |
|
#define | DIST_BUFSIZE 0x8000 /* buffer for distances, see trees.c */ |
|
#define | WSIZE 0x8000 /* window size--must be a power of two, and */ |
|
#define | DECLARE(type, array, size) type array[size] |
|
#define | tab_suffix window |
|
#define | tab_prefix prev /* hash link (see deflate.c) */ |
|
#define | head (prev+WSIZE) /* hash head (see deflate.c) */ |
|
#define | LZW_MAGIC "\037\235" /* Magic header for lzw files, 1F 9D */ |
|
#define | get_byte() (inptr < insize ? inbuf[inptr++] : fill_inbuf(0)) |
|
#define | Assert(cond, msg) |
|
#define | Trace(x) |
|
#define | Tracev(x) |
|
#define | Tracevv(x) |
|
#define | Tracec(c, x) |
|
#define | Tracecv(c, x) |
|
#define | BITS 16 |
|
#define | INIT_BITS 9 /* Initial number of bits per code */ |
|
#define | BIT_MASK 0x1f /* Mask for 'number of compression bits' */ |
|
#define | BLOCK_MODE 0x80 |
|
#define | LZW_RESERVED 0x60 /* reserved bits */ |
|
#define | CLEAR 256 /* flush the dictionary */ |
|
#define | FIRST (CLEAR+1) /* first free entry */ |
|
#define | local static |
|
#define | MAXCODE(n) (1L << (n)) |
|
#define | REGISTERS 2 |
|
#define | REG1 |
|
#define | REG2 |
|
#define | REG3 |
|
#define | REG4 |
|
#define | REG5 |
|
#define | REG6 |
|
#define | REG7 |
|
#define | REG8 |
|
#define | REG9 |
|
#define | REG10 |
|
#define | REG11 |
|
#define | REG12 |
|
#define | REG13 |
|
#define | REG14 |
|
#define | REG15 |
|
#define | REG16 |
|
#define | REG1 register |
|
#define | REG2 register |
|
#define | BYTEORDER 0000 |
|
#define | NOALLIGN 0 |
|
#define | input(b, o, c, n, m) |
|
#define | tab_prefixof(i) tab_prefix[i] |
|
#define | clear_tab_prefixof() memzero(tab_prefix, 256); |
|
#define | de_stack ((char_type *)(&d_buf[DIST_BUFSIZE-1])) |
|
#define | tab_suffixof(i) tab_suffix[i] |
|
|
void | ffpmsg (const char *err_message) |
|
local int fill_inbuf | OF ((int eof_ok)) |
|
local void write_buf | OF ((voidp buf, unsigned cnt)) |
|
local void error | OF ((char *m)) |
|
local int unlzw | OF ((FILE *in, FILE *out)) |
|
int work | OF ((FILE *infile, FILE *outfile)) |
|
int | zuncompress2mem (char *filename, FILE *diskfile, char **buffptr, size_t *buffsize, void *(*mem_realloc)(void *p, size_t newsize), size_t *filesize, int *status) |
|
local int | unlzw (FILE *in, FILE *out) |
|
local int | fill_inbuf (int eof_ok) |
|
local void | write_buf (voidp buf, unsigned cnt) |
|
local void | error (char *m) |
|
#define Assert |
( |
|
cond, |
|
|
|
msg |
|
) |
| |
#define BIT_MASK 0x1f /* Mask for 'number of compression bits' */ |
#define CLEAR 256 /* flush the dictionary */ |
#define DECLARE |
( |
|
type, |
|
|
|
array, |
|
|
|
size |
|
) |
| type array[size] |
#define DIST_BUFSIZE 0x8000 /* buffer for distances, see trees.c */ |
#define FIRST (CLEAR+1) /* first free entry */ |
#define get_byte |
( |
| ) |
(inptr < insize ? inbuf[inptr++] : fill_inbuf(0)) |
#define head (prev+WSIZE) /* hash head (see deflate.c) */ |
#define INBUF_EXTRA 64 /* required by unlzw() */ |
#define INBUFSIZ 0x8000 /* input buffer size */ |
#define INIT_BITS 9 /* Initial number of bits per code */ |
#define input |
( |
|
b, |
|
|
|
o, |
|
|
|
c, |
|
|
|
n, |
|
|
|
m |
|
) |
| |
Value:{ \
(c) = ((((long)(p[0]))|((long)(p[1])<<8)| \
((long)(p[2])<<16))>>((o)&0x7))&(m); \
(o) += (n); \
}
unsigned char char_type
Definition: zuncompress.c:188
#define LZW_MAGIC "\037\235" /* Magic header for lzw files, 1F 9D */ |
#define LZW_RESERVED 0x60 /* reserved bits */ |
#define MAXCODE |
( |
|
n | ) |
(1L << (n)) |
#define memzero |
( |
|
s, |
|
|
|
n |
|
) |
| memset ((voidp)(s), 0, (n)) |
#define MINZIP |
( |
|
a, |
|
|
|
b |
|
) |
| ((a) <= (b) ? (a) : (b)) |
#define OUTBUF_EXTRA 2048 /* required by unlzw() */ |
#define OUTBUFSIZ 16384 /* output buffer size */ |
#define tab_prefix prev /* hash link (see deflate.c) */ |
#define tab_suffix window |
#define WSIZE 0x8000 /* window size--must be a power of two, and */ |
typedef unsigned char uch |
typedef unsigned long ulg |
typedef unsigned short ush |
local void error |
( |
char * |
m | ) |
|
void ffpmsg |
( |
const char * |
err_message | ) |
|
put message on to error stack
local int fill_inbuf |
( |
int |
eof_ok | ) |
|
int work OF |
( |
(FILE *infile, FILE *outfile) |
| ) |
|
local int unlzw |
( |
FILE * |
in, |
|
|
FILE * |
out |
|
) |
| |
int zuncompress2mem |
( |
char * |
filename, |
|
|
FILE * |
diskfile, |
|
|
char ** |
buffptr, |
|
|
size_t * |
buffsize, |
|
|
void *(*)(void *p, size_t newsize) |
mem_realloc, |
|
|
size_t * |
filesize, |
|
|
int * |
status |
|
) |
| |
void*(* realloc_fn) (void *p, size_t newsize) |