liblzma: Simple/BCJ filters: Allow disabling generic BCJ options.

This will be needed for the ARM64 BCJ filter as it will use
its own options struct.
This commit is contained in:
Lasse Collin 2022-09-17 22:42:18 +03:00
parent c3592d0a55
commit 177bdc922c
8 changed files with 10 additions and 9 deletions

View File

@ -49,7 +49,7 @@ arm_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_filter_info *filters, bool is_encoder)
{
return lzma_simple_coder_init(next, allocator, filters,
&arm_code, 0, 4, 4, is_encoder);
&arm_code, 0, 4, 4, is_encoder, true);
}

View File

@ -54,7 +54,7 @@ armthumb_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_filter_info *filters, bool is_encoder)
{
return lzma_simple_coder_init(next, allocator, filters,
&armthumb_code, 0, 4, 2, is_encoder);
&armthumb_code, 0, 4, 2, is_encoder, true);
}

View File

@ -90,7 +90,7 @@ ia64_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_filter_info *filters, bool is_encoder)
{
return lzma_simple_coder_init(next, allocator, filters,
&ia64_code, 0, 16, 16, is_encoder);
&ia64_code, 0, 16, 16, is_encoder, true);
}

View File

@ -54,7 +54,7 @@ powerpc_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_filter_info *filters, bool is_encoder)
{
return lzma_simple_coder_init(next, allocator, filters,
&powerpc_code, 0, 4, 4, is_encoder);
&powerpc_code, 0, 4, 4, is_encoder, true);
}

View File

@ -237,7 +237,7 @@ lzma_simple_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
size_t (*filter)(void *simple, uint32_t now_pos,
bool is_encoder, uint8_t *buffer, size_t size),
size_t simple_size, size_t unfiltered_max,
uint32_t alignment, bool is_encoder)
uint32_t alignment, bool is_encoder, bool is_generic_bcj)
{
// Allocate memory for the lzma_simple_coder structure if needed.
lzma_simple_coder *coder = next->coder;
@ -270,7 +270,7 @@ lzma_simple_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
}
}
if (filters[0].options != NULL) {
if (is_generic_bcj && filters[0].options != NULL) {
const lzma_options_bcj *simple = filters[0].options;
coder->now_pos = simple->start_offset;
if (coder->now_pos & (alignment - 1))

View File

@ -69,6 +69,6 @@ extern lzma_ret lzma_simple_coder_init(lzma_next_coder *next,
size_t (*filter)(void *simple, uint32_t now_pos,
bool is_encoder, uint8_t *buffer, size_t size),
size_t simple_size, size_t unfiltered_max,
uint32_t alignment, bool is_encoder);
uint32_t alignment, bool is_encoder, bool is_generic_bcj);
#endif

View File

@ -61,7 +61,7 @@ sparc_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_filter_info *filters, bool is_encoder)
{
return lzma_simple_coder_init(next, allocator, filters,
&sparc_code, 0, 4, 4, is_encoder);
&sparc_code, 0, 4, 4, is_encoder, true);
}

View File

@ -128,7 +128,8 @@ x86_coder_init(lzma_next_coder *next, const lzma_allocator *allocator,
const lzma_filter_info *filters, bool is_encoder)
{
const lzma_ret ret = lzma_simple_coder_init(next, allocator, filters,
&x86_code, sizeof(lzma_simple_x86), 5, 1, is_encoder);
&x86_code, sizeof(lzma_simple_x86), 5, 1, is_encoder,
true);
if (ret == LZMA_OK) {
lzma_simple_coder *coder = next->coder;