]> wimlib.net Git - wimlib/blobdiff - src/wim.c
implement WIMLIB_INIT_FLAG_ASSUME_UTF8
[wimlib] / src / wim.c
index 776281200b53f4038a5db228286f8bf52e84fa78..a5044c68b2200e694c8afcde4688dac9a403f3ef 100644 (file)
--- a/src/wim.c
+++ b/src/wim.c
@@ -65,7 +65,7 @@ static WIMStruct *
 new_wim_struct()
 {
        WIMStruct *w = CALLOC(1, sizeof(WIMStruct));
-#ifdef WITH_FUSE
+#if defined(WITH_FUSE) || defined(ENABLE_MULTITHREADED_COMPRESSION)
        if (pthread_mutex_init(&w->fp_tab_mutex, NULL) != 0) {
                ERROR_WITH_ERRNO("Failed to initialize mutex");
                FREE(w);
@@ -690,16 +690,17 @@ test_locale_ctype_utf8()
 #endif
 }
 
-/* Get global memory allocations out of the way,
- * single-threaded programs like 'imagex'. */
 WIMLIBAPI int
-wimlib_global_init()
+wimlib_global_init(int init_flags)
 {
        libxml_global_init();
-#ifdef WITH_NTFS_3G
-       libntfs3g_global_init();
-#endif
-       wimlib_mbs_is_utf8 = test_locale_ctype_utf8();
+       if (!(init_flags & WIMLIB_INIT_FLAG_ASSUME_UTF8)) {
+               wimlib_mbs_is_utf8 = test_locale_ctype_utf8();
+       #ifdef WITH_NTFS_3G
+               if (!wimlib_mbs_is_utf8)
+                       libntfs3g_global_init();
+       #endif
+       }
 #ifdef __WIN32__
        win32_global_init();
 #endif