simple_decoder.c revision 292588
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 16extern lzma_ret 17lzma_simple_props_decode(void **options, const 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 31 opt->start_offset = unaligned_read32le(props); 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} 41