Commit | Line | Data |
---|---|---|
bc22c17e AK |
1 | #ifndef DECOMPRESS_GENERIC_H |
2 | #define DECOMPRESS_GENERIC_H | |
3 | ||
d97b07c5 YL |
4 | typedef int (*decompress_fn) (unsigned char *inbuf, long len, |
5 | long (*fill)(void*, unsigned long), | |
6 | long (*flush)(void*, unsigned long), | |
daeb6b6f | 7 | unsigned char *outbuf, |
d97b07c5 | 8 | long *posp, |
bc22c17e AK |
9 | void(*error)(char *x)); |
10 | ||
11 | /* inbuf - input buffer | |
12 | *len - len of pre-read data in inbuf | |
daeb6b6f PL |
13 | *fill - function to fill inbuf when empty |
14 | *flush - function to write out outbuf | |
15 | *outbuf - output buffer | |
bc22c17e AK |
16 | *posp - if non-null, input position (number of bytes read) will be |
17 | * returned here | |
18 | * | |
daeb6b6f PL |
19 | *If len != 0, inbuf should contain all the necessary input data, and fill |
20 | *should be NULL | |
21 | *If len = 0, inbuf can be NULL, in which case the decompressor will allocate | |
22 | *the input buffer. If inbuf != NULL it must be at least XXX_IOBUF_SIZE bytes. | |
23 | *fill will be called (repeatedly...) to read data, at most XXX_IOBUF_SIZE | |
24 | *bytes should be read per call. Replace XXX with the appropriate decompressor | |
25 | *name, i.e. LZMA_IOBUF_SIZE. | |
26 | * | |
27 | *If flush = NULL, outbuf must be large enough to buffer all the expected | |
28 | *output. If flush != NULL, the output buffer will be allocated by the | |
29 | *decompressor (outbuf = NULL), and the flush function will be called to | |
30 | *flush the output buffer at the appropriate time (decompressor and stream | |
31 | *dependent). | |
bc22c17e AK |
32 | */ |
33 | ||
daeb6b6f | 34 | |
889c92d2 | 35 | /* Utility routine to detect the decompression method */ |
d97b07c5 | 36 | decompress_fn decompress_method(const unsigned char *inbuf, long len, |
889c92d2 | 37 | const char **name); |
bc22c17e AK |
38 | |
39 | #endif |