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