Rearranged whitespace (and comments) in all the code!
[mmh] / sbr / check_charset.c
index f45448d..e6debc2 100644 (file)
@@ -1,15 +1,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 <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.
  */
 
 int
-check_charset (char *str, int len) 
+check_charset (char *str, int len)
 {
-    static char *mm_charset = NULL;
-    static char *alt_charset = NULL;
-    static int mm_len;
-    static int alt_len;
+       static char *mm_charset = NULL;
+       static char *alt_charset = NULL;
+       static int mm_len;
+       static int alt_len;
 
-    /* Cache the name of our default character set */
-    if (!mm_charset) {
-       if (!(mm_charset = getenv ("MM_CHARSET")))
-           mm_charset = "US-ASCII";
-       mm_len = strlen (mm_charset);
+       /* Cache the name of our default character set */
+       if (!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 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);
+               /* 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);
+               }
        }
-    }
 
-    /* Check if character set is OK */
-    if ((len == mm_len) && !strncasecmp(str, mm_charset, mm_len))
-       return 1;
-    if (alt_charset && (len == alt_len) && !strncasecmp(str, alt_charset, alt_len))
-       return 1;
+       /* Check if character set is OK */
+       if ((len == mm_len) && !strncasecmp(str, mm_charset, mm_len))
+               return 1;
+       if (alt_charset && (len == alt_len) && !strncasecmp(str, alt_charset, alt_len))
+               return 1;
 
-    return 0;
+       return 0;
 }
 
 
@@ -57,14 +73,14 @@ check_charset (char *str, int len)
 char *
 write_charset_8bit (void)
 {
-    static char *mm_charset = NULL;
+       static char *mm_charset = NULL;
 
-    /*
-     * Cache the name of the character set to
-     * use for 8bit text.
-     */
-    if (!mm_charset && !(mm_charset = getenv ("MM_CHARSET")))
-           mm_charset = "x-unknown";
+       /*
+        * Cache the name of the character set to
+        * use for 8bit text.
+        */
+       if (!mm_charset && !(mm_charset = get_charset ()))
+               mm_charset = "x-unknown";
 
-    return mm_charset;
+       return mm_charset;
 }