The R Project SVN R

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
49813 ripley 1
///////////////////////////////////////////////////////////////////////////////
2
//
3
/// \file       simple_decoder.c
4
/// \brief      Properties decoder for simple filters
5
//
6
//  Author:     Lasse Collin
7
//
8
//  This file has been put into the public domain.
9
//  You can do whatever you want with this file.
10
//
11
///////////////////////////////////////////////////////////////////////////////
12
 
13
#include "simple_decoder.h"
14
 
15
 
16
extern lzma_ret
17
lzma_simple_props_decode(void **options, lzma_allocator *allocator,
18
		const uint8_t *props, size_t props_size)
19
{
20
	if (props_size == 0)
21
		return LZMA_OK;
22
 
23
	if (props_size != 4)
24
		return LZMA_OPTIONS_ERROR;
25
 
26
	lzma_options_bcj *opt = lzma_alloc(
27
			sizeof(lzma_options_bcj), allocator);
28
	if (opt == NULL)
29
		return LZMA_MEM_ERROR;
30
 
53508 ripley 31
	opt->start_offset = unaligned_read32le(props);
49813 ripley 32
 
33
	// Don't leave an options structure allocated if start_offset is zero.
34
	if (opt->start_offset == 0)
35
		lzma_free(opt, allocator);
36
	else
37
		*options = opt;
38
 
39
	return LZMA_OK;
40
}