xref: /freebsd/sys/contrib/xz-embedded/userspace/buftest.c (revision 63dab8eed99114670445270e26cf7193fe55e0fa)
1*63dab8eeSAdrian Chadd /*
2*63dab8eeSAdrian Chadd  * Test application to test buffer-to-buffer decoding
3*63dab8eeSAdrian Chadd  *
4*63dab8eeSAdrian Chadd  * Author: Lasse Collin <lasse.collin@tukaani.org>
5*63dab8eeSAdrian Chadd  *
6*63dab8eeSAdrian Chadd  * This file has been put into the public domain.
7*63dab8eeSAdrian Chadd  * You can do whatever you want with this file.
8*63dab8eeSAdrian Chadd  */
9*63dab8eeSAdrian Chadd 
10*63dab8eeSAdrian Chadd #include <stdbool.h>
11*63dab8eeSAdrian Chadd #include <stdio.h>
12*63dab8eeSAdrian Chadd #include <string.h>
13*63dab8eeSAdrian Chadd #include "xz.h"
14*63dab8eeSAdrian Chadd 
15*63dab8eeSAdrian Chadd #define BUFFER_SIZE (1024 * 1024)
16*63dab8eeSAdrian Chadd 
17*63dab8eeSAdrian Chadd static uint8_t in[BUFFER_SIZE];
18*63dab8eeSAdrian Chadd static uint8_t out[BUFFER_SIZE];
19*63dab8eeSAdrian Chadd 
20*63dab8eeSAdrian Chadd int main(void)
21*63dab8eeSAdrian Chadd {
22*63dab8eeSAdrian Chadd 	struct xz_buf b;
23*63dab8eeSAdrian Chadd 	struct xz_dec *s;
24*63dab8eeSAdrian Chadd 	enum xz_ret ret;
25*63dab8eeSAdrian Chadd 
26*63dab8eeSAdrian Chadd 	xz_crc32_init();
27*63dab8eeSAdrian Chadd 
28*63dab8eeSAdrian Chadd 	s = xz_dec_init(XZ_SINGLE, 0);
29*63dab8eeSAdrian Chadd 	if (s == NULL) {
30*63dab8eeSAdrian Chadd 		fputs("Initialization failed", stderr);
31*63dab8eeSAdrian Chadd 		return 1;
32*63dab8eeSAdrian Chadd 	}
33*63dab8eeSAdrian Chadd 
34*63dab8eeSAdrian Chadd 	b.in = in;
35*63dab8eeSAdrian Chadd 	b.in_pos = 0;
36*63dab8eeSAdrian Chadd 	b.in_size = fread(in, 1, sizeof(in), stdin);
37*63dab8eeSAdrian Chadd 	b.out = out;
38*63dab8eeSAdrian Chadd 	b.out_pos = 0;
39*63dab8eeSAdrian Chadd 	b.out_size = sizeof(out);
40*63dab8eeSAdrian Chadd 
41*63dab8eeSAdrian Chadd 	ret = xz_dec_run(s, &b);
42*63dab8eeSAdrian Chadd 	xz_dec_end(s);
43*63dab8eeSAdrian Chadd 
44*63dab8eeSAdrian Chadd 	fwrite(out, 1, b.out_pos, stdout);
45*63dab8eeSAdrian Chadd 	fprintf(stderr, "%d\n", ret);
46*63dab8eeSAdrian Chadd 
47*63dab8eeSAdrian Chadd 	return 0;
48*63dab8eeSAdrian Chadd }
49