X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fwim.c;h=3ab0266b9216a1d8cacf480cb40fc8d367a07466;hb=b79d426cd90c506974f6c956a9af141b5d257d42;hp=2942863c938859e44d2ba62f2c4c2073492e395a;hpb=d444f2e5ddee51e7d9d0401cffcf88477c180422;p=wimlib diff --git a/src/wim.c b/src/wim.c index 2942863c..3ab0266b 100644 --- a/src/wim.c +++ b/src/wim.c @@ -38,8 +38,6 @@ #include "wimlib/security.h" #include "wimlib/wim.h" #include "wimlib/xml.h" -#include "wimlib/compressor_ops.h" -#include "wimlib/decompressor_ops.h" #include "wimlib/version.h" #ifdef __WIN32__ @@ -66,8 +64,6 @@ static u32 wim_default_pack_chunk_size(int ctype) { switch (ctype) { case WIMLIB_COMPRESSION_TYPE_LZMS: - /* Note: WIMGAPI uses 1 << 26, but lower sizes are compatible. - * */ return 1U << 25; /* 33554432 */ default: return 1U << 15; /* 32768 */ @@ -128,9 +124,8 @@ wim_chunk_size_valid(u32 chunk_size, int ctype) switch (ctype) { case WIMLIB_COMPRESSION_TYPE_LZX: return order >= 15 && order <= 21; - case WIMLIB_COMPRESSION_TYPE_XPRESS: - return order >= 12 && order <= 26; + return order >= 12 && order <= 16; case WIMLIB_COMPRESSION_TYPE_LZMS: return order >= 15 && order <= 30; } @@ -551,8 +546,6 @@ static int set_out_ctype(int ctype, u8 *out_ctype_p) { switch (ctype) { - case WIMLIB_COMPRESSION_TYPE_INVALID: - break; case WIMLIB_COMPRESSION_TYPE_NONE: case WIMLIB_COMPRESSION_TYPE_LZX: case WIMLIB_COMPRESSION_TYPE_XPRESS: @@ -1015,15 +1008,20 @@ wimlib_get_version(void) return WIMLIB_VERSION_CODE; } +static bool lib_initialized = false; + /* API function documented in wimlib.h */ WIMLIBAPI int wimlib_global_init(int init_flags) { - static bool already_inited = false; - - if (already_inited) + if (lib_initialized) return 0; +#ifdef ENABLE_ERROR_MESSAGES + if (wimlib_error_file == NULL) + wimlib_error_file = stderr; +#endif + if (init_flags & ~(WIMLIB_INIT_FLAG_ASSUME_UTF8 | WIMLIB_INIT_FLAG_DONT_ACQUIRE_PRIVILEGES | WIMLIB_INIT_FLAG_STRICT_CAPTURE_PRIVILEGES | @@ -1047,12 +1045,13 @@ wimlib_global_init(int init_flags) return ret; } #endif + iconv_global_init(); init_upcase(); if (init_flags & WIMLIB_INIT_FLAG_DEFAULT_CASE_SENSITIVE) default_ignore_case = false; else if (init_flags & WIMLIB_INIT_FLAG_DEFAULT_CASE_INSENSITIVE) default_ignore_case = true; - already_inited = true; + lib_initialized = true; return 0; } @@ -1060,11 +1059,14 @@ wimlib_global_init(int init_flags) WIMLIBAPI void wimlib_global_cleanup(void) { + if (!lib_initialized) + return; libxml_global_cleanup(); iconv_global_cleanup(); #ifdef __WIN32__ win32_global_cleanup(); #endif - cleanup_decompressor_params(); - cleanup_compressor_params(); + + wimlib_set_error_file(NULL); + lib_initialized = false; }