1229159Sadrian/*
2229159Sadrian * Test application to test buffer-to-buffer decoding
3229159Sadrian *
4229159Sadrian * Author: Lasse Collin <lasse.collin@tukaani.org>
5229159Sadrian *
6229159Sadrian * This file has been put into the public domain.
7229159Sadrian * You can do whatever you want with this file.
8229159Sadrian */
9229159Sadrian
10229159Sadrian#include <stdbool.h>
11229159Sadrian#include <stdio.h>
12229159Sadrian#include <string.h>
13229159Sadrian#include "xz.h"
14229159Sadrian
15229159Sadrian#define BUFFER_SIZE (1024 * 1024)
16229159Sadrian
17229159Sadrianstatic uint8_t in[BUFFER_SIZE];
18229159Sadrianstatic uint8_t out[BUFFER_SIZE];
19229159Sadrian
20229159Sadrianint main(void)
21229159Sadrian{
22229159Sadrian	struct xz_buf b;
23229159Sadrian	struct xz_dec *s;
24229159Sadrian	enum xz_ret ret;
25229159Sadrian
26229159Sadrian	xz_crc32_init();
27229159Sadrian
28229159Sadrian	s = xz_dec_init(XZ_SINGLE, 0);
29229159Sadrian	if (s == NULL) {
30229159Sadrian		fputs("Initialization failed", stderr);
31229159Sadrian		return 1;
32229159Sadrian	}
33229159Sadrian
34229159Sadrian	b.in = in;
35229159Sadrian	b.in_pos = 0;
36229159Sadrian	b.in_size = fread(in, 1, sizeof(in), stdin);
37229159Sadrian	b.out = out;
38229159Sadrian	b.out_pos = 0;
39229159Sadrian	b.out_size = sizeof(out);
40229159Sadrian
41229159Sadrian	ret = xz_dec_run(s, &b);
42229159Sadrian	xz_dec_end(s);
43229159Sadrian
44229159Sadrian	fwrite(out, 1, b.out_pos, stdout);
45229159Sadrian	fprintf(stderr, "%d\n", ret);
46229159Sadrian
47229159Sadrian	return 0;
48229159Sadrian}
49