10 int main(int argc, char *argv[])
16 struct wimlib_compressor *c;
17 struct wimlib_decompressor *d;
19 void *udata, *cdata, *decompressed;
22 fd = open(argv[1], O_RDONLY);
24 ret = fstat(fd, &stbuf);
27 if (stbuf.st_size < 2)
29 ret = read(fd, &ctype, 1);
31 ret = read(fd, &level, 1);
33 ctype = 1 + ((uint8_t)(ctype - 1) % 3); /* 1-3 */
34 level = 1 + (level % 100); /* 1-100 */
35 usize = stbuf.st_size - 2;
37 udata = malloc(usize);
38 cdata = malloc(usize);
39 decompressed = malloc(usize);
41 ret = read(fd, udata, usize);
44 ret = wimlib_create_compressor(ctype, usize, level, &c);
46 ret = wimlib_create_decompressor(ctype, usize, &d);
49 csize = wimlib_compress(udata, usize, cdata, usize, c);
51 ret = wimlib_decompress(cdata, csize,
52 decompressed, usize, d);
54 assert(memcmp(udata, decompressed, usize) == 0);
56 wimlib_free_compressor(c);
57 wimlib_free_decompressor(d);