mirror of
				https://git.tukaani.org/xz.git
				synced 2025-11-03 23:12:57 +00:00 
			
		
		
		
	This replaces bswap.h and integer.h. The tuklib module uses <byteswap.h> on GNU, <sys/endian.h> on *BSDs and <sys/byteorder.h> on Solaris, which may contain optimized code like inline assembly.
		
			
				
	
	
		
			41 lines
		
	
	
		
			986 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			986 B
		
	
	
	
		
			C
		
	
	
	
	
	
///////////////////////////////////////////////////////////////////////////////
 | 
						|
//
 | 
						|
/// \file       simple_decoder.c
 | 
						|
/// \brief      Properties decoder for simple filters
 | 
						|
//
 | 
						|
//  Author:     Lasse Collin
 | 
						|
//
 | 
						|
//  This file has been put into the public domain.
 | 
						|
//  You can do whatever you want with this file.
 | 
						|
//
 | 
						|
///////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#include "simple_decoder.h"
 | 
						|
 | 
						|
 | 
						|
extern lzma_ret
 | 
						|
lzma_simple_props_decode(void **options, lzma_allocator *allocator,
 | 
						|
		const uint8_t *props, size_t props_size)
 | 
						|
{
 | 
						|
	if (props_size == 0)
 | 
						|
		return LZMA_OK;
 | 
						|
 | 
						|
	if (props_size != 4)
 | 
						|
		return LZMA_OPTIONS_ERROR;
 | 
						|
 | 
						|
	lzma_options_bcj *opt = lzma_alloc(
 | 
						|
			sizeof(lzma_options_bcj), allocator);
 | 
						|
	if (opt == NULL)
 | 
						|
		return LZMA_MEM_ERROR;
 | 
						|
 | 
						|
	opt->start_offset = unaligned_read32le(props);
 | 
						|
 | 
						|
	// Don't leave an options structure allocated if start_offset is zero.
 | 
						|
	if (opt->start_offset == 0)
 | 
						|
		lzma_free(opt, allocator);
 | 
						|
	else
 | 
						|
		*options = opt;
 | 
						|
 | 
						|
	return LZMA_OK;
 | 
						|
}
 |