add ga_inl, ga_inr
[ghc-base.git] / cbits / PrelIOUtils.c
index 6444bd0..9e05f08 100644 (file)
@@ -13,7 +13,6 @@
 #include "HsBase.h"
 
 #ifdef __GLASGOW_HASKELL__
-# include "RtsMessages.h"
 
 void errorBelch2(const char*s, char *t)
 {
@@ -25,12 +24,28 @@ void debugBelch2(const char*s, char *t)
     debugBelch(s,t);
 }
 
-// Use a C wrapper for this because we avoid hsc2hs in base
-#if HAVE_LANGINFO_H
-#include <langinfo.h>
-char *localeEncoding (void)
+#if defined(HAVE_LIBCHARSET)
+#  include <libcharset.h>
+#elif defined(HAVE_LANGINFO_H)
+#  include <langinfo.h>
+#endif
+
+#if !defined(mingw32_HOST_OS)
+const char* localeEncoding(void)
 {
+#if defined(HAVE_LIBCHARSET)
+    return locale_charset();
+
+#elif defined(HAVE_LANGINFO_H)
     return nl_langinfo(CODESET);
+
+#else
+#warning Depending on the unportable behavior of GNU iconv due to absence of both libcharset and langinfo.h
+    /* GNU iconv accepts "" to mean the current locale's
+     * encoding. Warning: This isn't portable.
+     */
+    return "";
+#endif
 }
 #endif