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 */
+ return 1U << 26; /* 67108864 */
default:
return 1U << 15; /* 32768 */
}
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:
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 |
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;
}
WIMLIBAPI void
wimlib_global_cleanup(void)
{
+ if (!lib_initialized)
+ return;
libxml_global_cleanup();
iconv_global_cleanup();
#ifdef __WIN32__
#endif
cleanup_decompressor_params();
cleanup_compressor_params();
+
+ wimlib_set_error_file(NULL);
+ lib_initialized = false;
}