X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Fcharset.c;fp=sbr%2Fcharset.c;h=56f085cc3eb31de0b64772f4043c42c845e9edad;hp=0000000000000000000000000000000000000000;hb=8d77b48284c58c135a6b2787e721597346ab056d;hpb=4c1efddfd499300c7e74263e57d8aa137e84c853 diff --git a/sbr/charset.c b/sbr/charset.c new file mode 100644 index 0000000..56f085c --- /dev/null +++ b/sbr/charset.c @@ -0,0 +1,70 @@ +/* +** charset.c -- routines for character sets +** +** 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. +*/ +int +is_native_charset(char *str) +{ + char *mm_charset = NULL; + + if (!(mm_charset = get_charset())) { + mm_charset = "US-ASCII"; + } + if (mh_strcasecmp(str, mm_charset)==0) { + return 1; + } + + /* US-ASCII is a subset of the ISO-8859-X and UTF-8 character sets */ + if (strncasecmp("ISO-8859-", mm_charset, 9)==0 || + mh_strcasecmp("UTF-8", mm_charset)==0) { + if (mh_strcasecmp(str, "US-ASCII")==0) { + return 1; + } + } + return 0; +} + + +/* +** Return the name of the character set we are +** using for 8bit text. +*/ +char * +write_charset_8bit(void) +{ + char *mm_charset = NULL; + + if (!(mm_charset = get_charset())) { + mm_charset = "x-unknown"; + } + return mm_charset; +}