changeset 1382:1447c5296977

Fix locale charset detection on some BSD systems Tested on OpenBSD 4.2 If possible, use locale_charset() in place of nl_langinfo(). This patch also reverts the minor datadir change from last changeset as it doesn't solve the problem.
author Mikael Berthe <mikael@lilotux.net>
date Sun, 02 Dec 2007 13:04:57 +0100
parents 40095d413da9
children d9606bd03144
files mcabber/configure.ac mcabber/src/screen.c
diffstat 2 files changed, 15 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/configure.ac	Sun Dec 02 10:36:42 2007 +0100
+++ b/mcabber/configure.ac	Sun Dec 02 13:04:57 2007 +0100
@@ -33,7 +33,8 @@
 AC_HEADER_STDC
 AC_CHECK_HEADERS([arpa/inet.h fcntl.h locale.h netdb.h netinet/in.h stddef.h \
                   stdlib.h string.h strings.h sys/socket.h sys/time.h \
-                  syslog.h termios.h unistd.h getopt.h wchar.h wctype.h])
+                  syslog.h termios.h unistd.h getopt.h wchar.h wctype.h \
+                  localcharset.h])
 AC_CHECK_HEADERS([getopt.h], , AC_MSG_ERROR([Missing header file]))
 AC_VAR_TIMEZONE_EXTERNALS
 
@@ -189,7 +190,7 @@
 
 # Export $datadir to the source tree.
 if test x"${datadir}" != x""; then
-    AC_DEFINE_DIR(DATA_DIR, "$datadir", [Data files directory])
+    AC_DEFINE_DIR(DATA_DIR, "${datadir}", [Data files directory])
 fi
 
 AC_ARG_ENABLE(debug,
--- a/mcabber/src/screen.c	Sun Dec 02 10:36:42 2007 +0100
+++ b/mcabber/src/screen.c	Sun Dec 02 13:04:57 2007 +0100
@@ -25,11 +25,17 @@
 #include <string.h>
 #include <time.h>
 #include <ctype.h>
+
+#include <config.h>
 #include <locale.h>
-#include <langinfo.h>
-#include <config.h>
 #include <assert.h>
 
+#ifdef HAVE_LOCALCHARSET_H
+# include <localcharset.h>
+#else
+# include <langinfo.h>
+#endif
+
 #ifdef HAVE_ASPELL_H
 # include <aspell.h>
 #endif
@@ -734,7 +740,11 @@
 void scr_InitLocaleCharSet(void)
 {
   setlocale(LC_CTYPE, "");
+#ifdef HAVE_LOCALCHARSET_H
+  LocaleCharSet = locale_charset();
+#else
   LocaleCharSet = nl_langinfo(CODESET);
+#endif
   utf8_mode = (strcmp(LocaleCharSet, "UTF-8") == 0);
 }