zlib compressed images
Definition in file zlib.h.
Extract compressed data to image.
- Parameters
-
| format | Compression format code |
| data | Compressed input data |
| len | Length of compressed input data |
| extracted | Extracted image |
- Return values
-
Definition at line 49 of file zlib.c.
50 {
54
55
59 goto err_alloc;
60 }
61
62
63 while ( 1 ) {
64
65
67
68
69 deflate_chunk_init ( &
out, extracted->
rwdata, 0,
71
72
75 DBGC ( extracted,
"ZLIB %s could not decompress: %s\n",
77 goto err_inflate;
78 }
79
80
82 DBGC ( extracted,
"ZLIB %s decompression incomplete\n",
85 goto err_unfinished;
86 }
87
88
89 if (
out.offset == extracted->
len )
90 break;
91
92
94 DBGC ( extracted,
"ZLIB %s could not resize: %s\n",
96 goto err_set_size;
97 }
98 }
99
100
102
103 err_set_size:
104 err_unfinished:
105 err_inflate:
107 err_alloc:
109}
struct arbelprm_rc_send_wqe rc
void deflate_init(struct deflate *deflate, enum deflate_format format)
Initialise decompressor.
int deflate_inflate(struct deflate *deflate, const void *data, size_t len, struct deflate_chunk *out)
Inflate compressed data.
static int deflate_finished(struct deflate *deflate)
Check if decompression has finished.
uint8_t data[48]
Additional event data.
#define EINVAL
Invalid argument.
#define ENOMEM
Not enough space.
int image_set_len(struct image *image, size_t len)
Set image length.
void * zalloc(size_t size)
Allocate cleared memory.
static void(* free)(struct refcnt *refcnt))
char * strerror(int errno)
Retrieve string representation of error number.
size_t len
Length of raw file image.
void * rwdata
Writable data.
References data, DBGC, deflate_finished(), deflate_inflate(), deflate_init(), EINVAL, ENOMEM, format, free, image_set_len(), image::len, len, image::name, out, rc, image::rwdata, strerror(), and zalloc().
Referenced by gzip_extract(), and zlib_extract().