X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=utf8%2Futf8-locale.c;h=a59b8ce5fe98b685bfcc92d1fbc813d2c9f84e6a;hb=8a73dd117ad3bf06a89595f7cd8fdef45c231a6e;hp=115c66ee7312e66bec78e797abaa4f2cc95bc9e2;hpb=af581cf02cbbed0d24636be0b3533587448e7e0f;p=gedcom-parse.git diff --git a/utf8/utf8-locale.c b/utf8/utf8-locale.c index 115c66e..a59b8ce 100644 --- a/utf8/utf8-locale.c +++ b/utf8/utf8-locale.c @@ -12,15 +12,11 @@ #include "utf8.h" #include #include +#include #include "libcharset.h" static convert_t locale_conv = NULL; -void convert_set_unknown(const char* unknown) -{ - conversion_set_unknown(locale_conv, unknown); -} - void close_conversion_contexts() { cleanup_utf8_conversion(locale_conv); @@ -29,7 +25,7 @@ void close_conversion_contexts() int open_conversion_contexts() { assert (locale_conv == NULL); - locale_conv = initialize_utf8_conversion(locale_charset()); + locale_conv = initialize_utf8_conversion(locale_charset(), 0); if (locale_conv) { atexit(close_conversion_contexts); @@ -40,12 +36,19 @@ int open_conversion_contexts() } } +void convert_set_unknown(const char* unknown) +{ + if (!locale_conv) + open_conversion_contexts(); + conversion_set_unknown(locale_conv, unknown); +} + char* convert_utf8_to_locale(const char* input, int *conv_fails) { if (!locale_conv) open_conversion_contexts(); - return convert_from_utf8(locale_conv, input, conv_fails); + return convert_from_utf8(locale_conv, input, conv_fails, NULL); } char* convert_locale_to_utf8(const char* input) @@ -53,5 +56,5 @@ char* convert_locale_to_utf8(const char* input) if (!locale_conv) open_conversion_contexts(); - return convert_to_utf8(locale_conv, input); + return convert_to_utf8(locale_conv, input, strlen(input)); }