X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/6c42153ad9362cc676ea66563bf400d7511b3b68..f1595ee7fc4db1bf8c50b00a796fb3f9b1d66c21:/sbr/check_charset.c diff --git a/sbr/check_charset.c b/sbr/check_charset.c index 5d98774c..cc93273f 100644 --- a/sbr/check_charset.c +++ b/sbr/check_charset.c @@ -2,8 +2,6 @@ /* * 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. @@ -11,6 +9,22 @@ #include +#include + +/* Only get_charset() should use norm_charmap(), so hide its + declaration here. */ +char *norm_charmap(char *); + +/* + * Get the current character set + */ +char * +get_charset () +{ + return norm_charmap(nl_langinfo (CODESET)); +} + + /* * Check if we can display a given character set natively. * We are passed the length of the initial part of the @@ -28,12 +42,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) || + !strcasecmp("UTF-8", mm_charset)) { alt_charset = "US-ASCII"; alt_len = strlen (alt_charset); } @@ -62,7 +77,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;