/*
* check_charset.c -- routines for character sets
*
- * $Id$
- *
* This code is Copyright (c) 2002, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
* complete copyright information.
*/
#include <h/mh.h>
+#ifdef HAVE_LANGINFO_H
+# include <langinfo.h>
+#endif
+
+
+/*
+ * Get the current character set
+ */
+char *
+get_charset ()
+{
+ char *charset = getenv ("MM_CHARSET");
+#if defined(HAVE_NL_LANGINFO) && defined(CODESET)
+ if (!charset)
+ charset = norm_charmap(nl_langinfo (CODESET));
+#endif
+ return charset;
+}
+
/*
* Check if we can display a given character set natively.
/* Cache the name of our default character set */
if (!mm_charset) {
- if (!(mm_charset = getenv ("MM_CHARSET")))
+ if (!(mm_charset = get_charset ()))
mm_charset = "US-ASCII";
mm_len = strlen (mm_charset);
- /* US-ASCII is a subset of the ISO-8859-X character sets */
- if (!strncasecmp("ISO-8859-", mm_charset, 9)) {
+ /* US-ASCII is a subset of the ISO-8859-X and UTF-8 character sets */
+ if (!strncasecmp("ISO-8859-", mm_charset, 9) ||
+ !mh_strcasecmp("UTF-8", mm_charset)) {
alt_charset = "US-ASCII";
alt_len = strlen (alt_charset);
}
* Cache the name of the character set to
* use for 8bit text.
*/
- if (!mm_charset && !(mm_charset = getenv ("MM_CHARSET")))
+ if (!mm_charset && !(mm_charset = get_charset ()))
mm_charset = "x-unknown";
return mm_charset;