changeset 592:67a332121aea

Try UTF8 -> locale conversion with fallback
author Mikael Berthe <mikael@lilotux.net>
date Sun, 11 Dec 2005 11:11:34 +0100
parents 5a685e9012b4
children 29d9a54ac69f
files mcabber/src/screen.c mcabber/src/utils.h
diffstat 2 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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;
 }
--- 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);