Exemplo n.º 1
0
	void rdbuf::init(std::istream &file, std::streampos start, std::streampos size, std::streampos decomp)
	{
		buf_base::init(file);
		ptr_ = 0;
		start_ = start;
		size_ = size;
		decomp_ = decomp;
		if (lzma_raw_decoder(&lzma_, default_filters) != LZMA_OK) throw compress_error{"Stream decoder setup failed"};
	}
Exemplo n.º 2
0
	void memrdbuf::reset()
	{
		action_ = LZMA_RUN;
		lzma_ = LZMA_STREAM_INIT;
		if (lzma_raw_decoder(&lzma_, default_filters) != LZMA_OK) throw compress_error{"Stream decoder setup failed"};
		pos_ = 0;
		char *begin = &buf_[0];
		setg(begin, begin, begin);
		lzma_.next_in = reinterpret_cast<const uint8_t*>(source_);
		lzma_.avail_in = size_;
		ff_to(start_);
	}
Exemplo n.º 3
0
static int
Decompressor_init_raw(lzma_stream *lzs, PyObject *filterspecs)
{
    lzma_filter filters[LZMA_FILTERS_MAX + 1];
    lzma_ret lzret;

    if (parse_filter_chain_spec(filters, filterspecs) == -1)
        return -1;
    lzret = lzma_raw_decoder(lzs, filters);
    free_filter_chain(filters);
    if (catch_lzma_error(lzret))
        return -1;
    else
        return 0;
}
Exemplo n.º 4
0
static lzma_stream * init_raw_lzma_stream(lzma_vli filter, lzma_options_lzma & options) {
	
	options.preset_dict = NULL;
	
	if(options.dict_size > (uint32_t(1) << 28)) {
		throw lzma_error("inno lzma dict size too large", LZMA_FORMAT_ERROR);
	}
	
	lzma_stream * strm = new lzma_stream;
	lzma_stream tmp = LZMA_STREAM_INIT;
	*strm = tmp;
	strm->allocator = NULL;
	
	const lzma_filter filters[2] = { { filter,  &options }, { LZMA_VLI_UNKNOWN, NULL } };
	lzma_ret ret = lzma_raw_decoder(strm, filters);
	if(ret != LZMA_OK) {
		delete strm;
		throw lzma_error("inno lzma init error", ret);
	}
	
	return strm;
}
Exemplo n.º 5
0
	void decompress(std::istream &in, std::ostream &out)
	{
		lzma_stream stream = LZMA_STREAM_INIT;
		if (lzma_raw_decoder(&stream, default_filters) != LZMA_OK) throw compress_error{"Stream decoder setup failed"};
		code(stream, in, out);
	}