add ga_inl, ga_inr
[ghc-base.git] / cbits / PrelIOUtils.c
index be97876..9e05f08 100644 (file)
@@ -7,13 +7,12 @@
 #define INLINE
 
 #ifdef __GLASGOW_HASKELL__
-# include "Stg.h"
+# include "Rts.h"
 #endif
 
 #include "HsBase.h"
 
 #ifdef __GLASGOW_HASKELL__
-# include "RtsMessages.h"
 
 void errorBelch2(const char*s, char *t)
 {
@@ -24,4 +23,30 @@ void debugBelch2(const char*s, char *t)
 {
     debugBelch(s,t);
 }
+
+#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
+
 #endif /* __GLASGOW_HASKELL__ */