Commit | Line | Data |
---|---|---|
ad9d2716 DG |
1 | /* |
2 | * Decompression convenience functions | |
3 | * | |
4 | * Copyright 2007 David Gibson, IBM Corporation. | |
5 | * | |
6 | * This file is licensed under the terms of the GNU General Public | |
7 | * License version 2. This program is licensed "as is" without any | |
8 | * warranty of any kind, whether express or implied. | |
9 | */ | |
10 | #ifndef _PPC_BOOT_GUNZIP_UTIL_H_ | |
11 | #define _PPC_BOOT_GUNZIP_UTIL_H_ | |
12 | ||
13 | #include "zlib.h" | |
14 | ||
7850ad5c DG |
15 | /* |
16 | * These functions are designed to make life easy for decompressing | |
17 | * kernel images, initrd images or any other gzip compressed image, | |
18 | * particularly if its useful to decompress part of the image (e.g. to | |
19 | * examine headers) before decompressing the remainder. | |
20 | * | |
21 | * To use: | |
22 | * - declare a gunzip_state structure | |
23 | * - use gunzip_start() to initialize the state, associating it | |
24 | * with a stream of compressed data | |
25 | * - use gunzip_partial(), gunzip_exactly() and gunzip_discard() | |
26 | * in any combination to extract pieces of data from the stream | |
27 | * - Finally use gunzip_finish() to extract the tail of the | |
28 | * compressed stream and wind up zlib | |
29 | */ | |
30 | ||
ad9d2716 DG |
31 | /* scratch space for gunzip; 46912 is from zlib_inflate_workspacesize() */ |
32 | #define GUNZIP_SCRATCH_SIZE 46912 | |
33 | ||
34 | struct gunzip_state { | |
35 | z_stream s; | |
36 | char scratch[46912]; | |
37 | }; | |
38 | ||
39 | void gunzip_start(struct gunzip_state *state, void *src, int srclen); | |
40 | int gunzip_partial(struct gunzip_state *state, void *dst, int dstlen); | |
41 | void gunzip_exactly(struct gunzip_state *state, void *dst, int len); | |
42 | void gunzip_discard(struct gunzip_state *state, int len); | |
43 | int gunzip_finish(struct gunzip_state *state, void *dst, int len); | |
44 | ||
45 | #endif /* _PPC_BOOT_GUNZIP_UTIL_H_ */ |