X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fwim.c;h=fc15a21db00c6a541091e770a29ca7eef8863260;hb=ff3db5d2a3d2d0d7cd910ffe27489e0b98a97688;hp=2dd0787238863a7dac8dafbe003f0ba41b2bbea9;hpb=81c83fa2dbb44e788f234ddd5427c00e33c12d52;p=wimlib diff --git a/src/wim.c b/src/wim.c index 2dd07872..fc15a21d 100644 --- a/src/wim.c +++ b/src/wim.c @@ -549,8 +549,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: @@ -1013,15 +1011,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 | @@ -1045,12 +1048,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; } @@ -1058,6 +1062,8 @@ wimlib_global_init(int init_flags) WIMLIBAPI void wimlib_global_cleanup(void) { + if (!lib_initialized) + return; libxml_global_cleanup(); iconv_global_cleanup(); #ifdef __WIN32__ @@ -1065,4 +1071,7 @@ wimlib_global_cleanup(void) #endif cleanup_decompressor_params(); cleanup_compressor_params(); + + wimlib_set_error_file(NULL); + lib_initialized = false; }