# HG changeset patch # User Mikael Berthe # Date 1134295894 -3600 # Node ID 67a332121aeaed45ad6546de26f4181b447f56f9 # Parent 5a685e9012b48ad4edc14336cbb547116a225e40 Try UTF8 -> locale conversion with fallback diff -r 5a685e9012b4 -r 67a332121aea mcabber/src/screen.c --- a/mcabber/src/screen.c Sat Dec 10 23:52:04 2005 +0100 +++ b/mcabber/src/screen.c Sun Dec 11 11:11:34 2005 +0100 @@ -45,6 +45,8 @@ #define DEFAULT_LOG_WIN_HEIGHT (5+2) #define CHAT_WIN_HEIGHT (maxY-1-Log_Win_Height) +char *LocaleCharSet = "C"; + static unsigned short int Log_Win_Height; static inline void check_offset(int); @@ -224,7 +226,8 @@ ptr_inputline = inputLine; setlocale(LC_CTYPE, ""); - utf8_mode = (strcmp(nl_langinfo(CODESET), "UTF-8") == 0); + LocaleCharSet = nl_langinfo(CODESET); + utf8_mode = (strcmp(LocaleCharSet, "UTF-8") == 0); return; } diff -r 5a685e9012b4 -r 67a332121aea mcabber/src/utils.h --- a/mcabber/src/utils.h Sat Dec 10 23:52:04 2005 +0100 +++ b/mcabber/src/utils.h Sun Dec 11 11:11:34 2005 +0100 @@ -1,8 +1,11 @@ #ifndef __UTILS_H__ #define __UTILS_H__ 1 +extern char *LocaleCharSet; + #define to_utf8(s) ((s) ? g_locale_to_utf8((s), -1, NULL,NULL,NULL) : NULL) -#define from_utf8(s) ((s) ? g_locale_from_utf8((s), -1, NULL,NULL,NULL) : NULL) +#define from_utf8(s) ((s) ? g_convert_with_fallback((s), -1, LocaleCharSet, \ + "UTF-8", NULL,NULL,NULL,NULL) : NULL) void ut_InitDebug(unsigned int level, const char *file); void ut_WriteLog(unsigned int flag, const char *data);