X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Fcheck_charset.c;h=8ee93b1e22209367c19c31f2ed76d9d3d9c0c7f4;hp=e16f3603aca71953308f000bcc58fe6e303619e2;hb=5dd6771b28c257af405d7248639ed0e3bcdce38b;hpb=1691e80890e5d8ba258c51c214a3e91880e1db2b diff --git a/sbr/check_charset.c b/sbr/check_charset.c index e16f360..8ee93b1 100644 --- a/sbr/check_charset.c +++ b/sbr/check_charset.c @@ -2,10 +2,31 @@ /* * 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 +#ifdef HAVE_LANGINFO_H +# include +#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. @@ -24,12 +45,13 @@ check_charset (char *str, int len) /* 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); } @@ -58,7 +80,7 @@ write_charset_8bit (void) * 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;