]>
Commit | Line | Data |
---|---|---|
0c670fc1 SG |
1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
2 | /* | |
3 | * (C) Copyright 2000-2009 | |
4 | * Wolfgang Denk, DENX Software Engineering, [email protected]. | |
5 | */ | |
6 | ||
7 | #ifndef __GZIP_H | |
8 | #define __GZIP_H | |
9 | ||
e6f6f9e6 SG |
10 | struct blk_desc; |
11 | ||
0c670fc1 SG |
12 | /** |
13 | * gzip_parse_header() - Parse a header from a gzip file | |
14 | * | |
15 | * This returns the length of the header. | |
16 | * | |
17 | * @src: Pointer to gzip file | |
18 | * @len: Length of data | |
185f812c | 19 | * Return: length of header in bytes, or -1 if not enough data |
0c670fc1 SG |
20 | */ |
21 | int gzip_parse_header(const unsigned char *src, unsigned long len); | |
22 | ||
23 | /** | |
24 | * gunzip() - Decompress gzipped data | |
25 | * | |
26 | * @dst: Destination for uncompressed data | |
27 | * @dstlen: Size of destination buffer | |
28 | * @src: Source data to decompress | |
29 | * @lenp: Returns length of uncompressed data | |
185f812c | 30 | * Return: 0 if OK, -1 on error |
0c670fc1 SG |
31 | */ |
32 | int gunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp); | |
33 | ||
34 | /** | |
35 | * zunzip() - Uncompress blocks compressed with zlib without headers | |
36 | * | |
37 | * @dst: Destination for uncompressed data | |
38 | * @dstlen: Size of destination buffer | |
39 | * @src: Source data to decompress | |
40 | * @lenp: On entry, length data at @src. On exit, number of bytes used from @src | |
41 | * @stoponerr: 0 to continue when a decode error is found, 1 to stop | |
42 | * @offset: start offset within the src buffer | |
185f812c | 43 | * Return: 0 if OK, -1 on error |
0c670fc1 SG |
44 | */ |
45 | int zunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp, | |
46 | int stoponerr, int offset); | |
47 | ||
48 | /** | |
49 | * gzwrite progress indicators: defined weak to allow board-specific | |
50 | * overrides: | |
51 | * | |
52 | * gzwrite_progress_init called on startup | |
53 | * gzwrite_progress called during decompress/write loop | |
54 | * gzwrite_progress_finish called at end of loop to | |
55 | * indicate success (retcode=0) or failure | |
56 | */ | |
5a4f10d7 | 57 | void gzwrite_progress_init(ulong expected_size); |
0c670fc1 | 58 | |
5a4f10d7 | 59 | void gzwrite_progress(int iteration, ulong bytes_written, ulong total_bytes); |
0c670fc1 | 60 | |
5a4f10d7 | 61 | void gzwrite_progress_finish(int retcode, ulong totalwritten, ulong totalsize, |
0c670fc1 SG |
62 | u32 expected_crc, u32 calculated_crc); |
63 | ||
64 | /** | |
65 | * gzwrite() - decompress and write gzipped image from memory to block device | |
66 | * | |
67 | * @src: compressed image address | |
68 | * @len: compressed image length in bytes | |
69 | * @dev: block device descriptor | |
70 | * @szwritebuf: bytes per write (pad to erase size) | |
71 | * @startoffs: offset in bytes of first write | |
72 | * @szexpected: expected uncompressed length, may be zero to use gzip trailer | |
73 | * for files under 4GiB | |
185f812c | 74 | * Return: 0 if OK, -1 on error |
0c670fc1 SG |
75 | */ |
76 | int gzwrite(unsigned char *src, int len, struct blk_desc *dev, ulong szwritebuf, | |
5a4f10d7 | 77 | ulong startoffs, ulong szexpected); |
0c670fc1 SG |
78 | |
79 | /** | |
80 | * gzip()- Compress data into a buffer using the gzip algorithm | |
81 | * | |
82 | * @dst: Destination buffer for compressed data | |
83 | * @lenp: On entry, space available in destination buffer (in bytes). On exit, | |
84 | * number of bytes used in the buffer | |
85 | * @src: Source data to compress | |
86 | * @srclen: Size of source data | |
185f812c | 87 | * Return: 0 if OK, -1 on error |
0c670fc1 SG |
88 | */ |
89 | int gzip(void *dst, unsigned long *lenp, unsigned char *src, ulong srclen); | |
90 | ||
91 | /** | |
92 | * zzip() - Compress blocks with zlib | |
93 | * | |
94 | * @dst: Destination for compressed data | |
95 | * @lenp: On entry, length data at @dst. On exit, number of bytes written to | |
96 | * @dst | |
97 | * @src: Source data to compress | |
98 | * @srclen: Size of source data | |
99 | * @stoponerr: 0 to continue when a decode error is found, 1 to stop | |
100 | * @func: Some sort of function that is called to do something. !ADD DOCS HERE! | |
101 | */ | |
102 | int zzip(void *dst, ulong *lenp, unsigned char *src, ulong srclen, | |
103 | int stoponerr, int (*func)(ulong, ulong)); | |
104 | ||
105 | #endif |