struct iconv_list_head name = { \
.from_encoding = from, \
.to_encoding = to, \
- .list = LIST_HEAD_INIT(name.list), \
- .mutex = PTHREAD_MUTEX_INITIALIZER, \
}
static iconv_t *
return utf8_to_tstr(utf8str, strlen(utf8str), out, &out_nbytes);
}
+static void
+iconv_init(struct iconv_list_head *head)
+{
+ pthread_mutex_init(&head->mutex, NULL);
+ INIT_LIST_HEAD(&head->list);
+}
+
static void
iconv_cleanup(struct iconv_list_head *head)
{
}
}
+void
+iconv_global_init(void)
+{
+ iconv_init(&iconv_utf8_to_tstr);
+ iconv_init(&iconv_tstr_to_utf8);
+#if !TCHAR_IS_UTF16LE
+ iconv_init(&iconv_utf16le_to_tstr);
+ iconv_init(&iconv_tstr_to_utf16le);
+ iconv_init(&iconv_utf16le_to_utf8);
+ iconv_init(&iconv_utf8_to_utf16le);
+#endif
+}
+
void
iconv_global_cleanup(void)
{