From 34eb5e201d62f7f46bbe6fe97cfe08cb31b3b88c Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 31 Jan 2010 19:52:38 +0200 Subject: [PATCH] Select the default integrity check type at runtime. Previously it was set statically to CRC64 or CRC32 depending on options passed to the configure script. --- src/xz/coder.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/xz/coder.c b/src/xz/coder.c index e6ed3e5..cd5da29 100644 --- a/src/xz/coder.c +++ b/src/xz/coder.c @@ -56,17 +56,17 @@ static bool preset_default = true; static bool preset_extreme = false; /// Integrity check type -#ifdef HAVE_CHECK_CRC64 -static lzma_check check = LZMA_CHECK_CRC64; -#else -static lzma_check check = LZMA_CHECK_CRC32; -#endif +static lzma_check check; + +/// This becomes false if the --check=CHECK option is used. +static bool check_default = true; extern void coder_set_check(lzma_check new_check) { check = new_check; + check_default = false; return; } @@ -265,6 +265,15 @@ coder_set_compression_settings(void) opt_threads = thread_limit; */ + if (check_default) { + // The default check type is CRC64, but fallback to CRC32 + // if CRC64 isn't supported by the copy of liblzma we are + // using. CRC32 is always supported. + check = LZMA_CHECK_CRC64; + if (!lzma_check_is_supported(check)) + check = LZMA_CHECK_CRC32; + } + return; } -- 2.7.4