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