The R Project SVN R

Rev

Rev 49813 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 49813 Rev 53508
Line 71... Line 71...
71
 
71
 
72
 
72
 
73
extern LZMA_API(lzma_ret)
73
extern LZMA_API(lzma_ret)
74
lzma_block_header_encode(const lzma_block *block, uint8_t *out)
74
lzma_block_header_encode(const lzma_block *block, uint8_t *out)
75
{
75
{
76
	// Valdidate everything but filters.
76
	// Validate everything but filters.
77
	if (lzma_block_unpadded_size(block) == 0
77
	if (lzma_block_unpadded_size(block) == 0
78
			|| !lzma_vli_is_valid(block->uncompressed_size))
78
			|| !lzma_vli_is_valid(block->uncompressed_size))
79
		return LZMA_PROG_ERROR;
79
		return LZMA_PROG_ERROR;
80
 
80
 
81
	// Indicate the size of the buffer _excluding_ the CRC32 field.
81
	// Indicate the size of the buffer _excluding_ the CRC32 field.
Line 108... Line 108...
108
	if (block->filters == NULL || block->filters[0].id == LZMA_VLI_UNKNOWN)
108
	if (block->filters == NULL || block->filters[0].id == LZMA_VLI_UNKNOWN)
109
		return LZMA_PROG_ERROR;
109
		return LZMA_PROG_ERROR;
110
 
110
 
111
	size_t filter_count = 0;
111
	size_t filter_count = 0;
112
	do {
112
	do {
113
		// There can be at maximum of four filters.
113
		// There can be a maximum of four filters.
114
		if (filter_count == LZMA_FILTERS_MAX)
114
		if (filter_count == LZMA_FILTERS_MAX)
115
			return LZMA_PROG_ERROR;
115
			return LZMA_PROG_ERROR;
116
 
116
 
117
		return_if_error(lzma_filter_flags_encode(
117
		return_if_error(lzma_filter_flags_encode(
118
				block->filters + filter_count,
118
				block->filters + filter_count,
Line 124... Line 124...
124
 
124
 
125
	// Padding
125
	// Padding
126
	memzero(out + out_pos, out_size - out_pos);
126
	memzero(out + out_pos, out_size - out_pos);
127
 
127
 
128
	// CRC32
128
	// CRC32
129
	integer_write_32(out + out_size, lzma_crc32(out, out_size, 0));
129
	unaligned_write32le(out + out_size, lzma_crc32(out, out_size, 0));
130
 
130
 
131
	return LZMA_OK;
131
	return LZMA_OK;
132
}
132
}