xref: /freebsd/sys/contrib/xz-embedded/userspace/buftest.c (revision cd3a777bca91669fc4711d1eff66c40f3f62a223)
163dab8eeSAdrian Chadd /*
263dab8eeSAdrian Chadd  * Test application to test buffer-to-buffer decoding
363dab8eeSAdrian Chadd  *
463dab8eeSAdrian Chadd  * Author: Lasse Collin <lasse.collin@tukaani.org>
563dab8eeSAdrian Chadd  *
663dab8eeSAdrian Chadd  * This file has been put into the public domain.
763dab8eeSAdrian Chadd  * You can do whatever you want with this file.
863dab8eeSAdrian Chadd  */
963dab8eeSAdrian Chadd 
1063dab8eeSAdrian Chadd #include <stdbool.h>
1163dab8eeSAdrian Chadd #include <stdio.h>
1263dab8eeSAdrian Chadd #include <string.h>
1363dab8eeSAdrian Chadd #include "xz.h"
1463dab8eeSAdrian Chadd 
1563dab8eeSAdrian Chadd #define BUFFER_SIZE (1024 * 1024)
1663dab8eeSAdrian Chadd 
1763dab8eeSAdrian Chadd static uint8_t in[BUFFER_SIZE];
1863dab8eeSAdrian Chadd static uint8_t out[BUFFER_SIZE];
1963dab8eeSAdrian Chadd 
main(void)2063dab8eeSAdrian Chadd int main(void)
2163dab8eeSAdrian Chadd {
2263dab8eeSAdrian Chadd 	struct xz_buf b;
2363dab8eeSAdrian Chadd 	struct xz_dec *s;
2463dab8eeSAdrian Chadd 	enum xz_ret ret;
2563dab8eeSAdrian Chadd 
2663dab8eeSAdrian Chadd 	xz_crc32_init();
2763dab8eeSAdrian Chadd 
2863dab8eeSAdrian Chadd 	s = xz_dec_init(XZ_SINGLE, 0);
2963dab8eeSAdrian Chadd 	if (s == NULL) {
30*cd3a777bSXin LI 		fputs("Initialization failed\n", stderr);
3163dab8eeSAdrian Chadd 		return 1;
3263dab8eeSAdrian Chadd 	}
3363dab8eeSAdrian Chadd 
3463dab8eeSAdrian Chadd 	b.in = in;
3563dab8eeSAdrian Chadd 	b.in_pos = 0;
3663dab8eeSAdrian Chadd 	b.in_size = fread(in, 1, sizeof(in), stdin);
37*cd3a777bSXin LI 
3863dab8eeSAdrian Chadd 	b.out = out;
3963dab8eeSAdrian Chadd 	b.out_pos = 0;
4063dab8eeSAdrian Chadd 	b.out_size = sizeof(out);
4163dab8eeSAdrian Chadd 
4263dab8eeSAdrian Chadd 	ret = xz_dec_run(s, &b);
4363dab8eeSAdrian Chadd 	xz_dec_end(s);
4463dab8eeSAdrian Chadd 
4563dab8eeSAdrian Chadd 	fwrite(out, 1, b.out_pos, stdout);
4663dab8eeSAdrian Chadd 	fprintf(stderr, "%d\n", ret);
4763dab8eeSAdrian Chadd 
4863dab8eeSAdrian Chadd 	return 0;
4963dab8eeSAdrian Chadd }
50