(root)/
xz-5.4.5/
src/
liblzma/
simple/
simple_decoder.c
       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, 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 = 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  }