1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef DECOMPRESS_GENERIC_H |
3 | #define DECOMPRESS_GENERIC_H |
4 | |
5 | typedef int (*decompress_fn) (unsigned char *inbuf, long len, |
6 | long (*fill)(void*, unsigned long), |
7 | long (*flush)(void*, unsigned long), |
8 | unsigned char *outbuf, |
9 | long *posp, |
10 | void(*error)(char *x)); |
11 | |
12 | /* inbuf - input buffer |
13 | *len - len of pre-read data in inbuf |
14 | *fill - function to fill inbuf when empty |
15 | *flush - function to write out outbuf |
16 | *outbuf - output buffer |
17 | *posp - if non-null, input position (number of bytes read) will be |
18 | * returned here |
19 | * |
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). |
33 | */ |
34 | |
35 | |
36 | /* Utility routine to detect the decompression method */ |
37 | decompress_fn decompress_method(const unsigned char *inbuf, long len, |
38 | const char **name); |
39 | |
40 | #endif |
41 | |