Add/update copyright notice in all source code files.
[mmh] / sbr / check_charset.c
1
2 /*
3  * check_charset.c -- routines for character sets
4  *
5  * $Id$
6  *
7  * This code is Copyright (c) 2002, by the authors of nmh.  See the
8  * COPYRIGHT file in the root directory of the nmh distribution for
9  * complete copyright information.
10  */
11
12 #include <h/mh.h>
13
14 /*
15  * Check if we can display a given character set natively.
16  * We are passed the length of the initial part of the
17  * string to check, since we want to allow the name of the
18  * character set to be a substring of a larger string.
19  */
20
21 int
22 check_charset (char *str, int len) 
23 {
24     static char *mm_charset = NULL;
25     static char *alt_charset = NULL;
26     static int mm_len;
27     static int alt_len;
28
29     /* Cache the name of our default character set */
30     if (!mm_charset) {
31         if (!(mm_charset = getenv ("MM_CHARSET")))
32             mm_charset = "US-ASCII";
33         mm_len = strlen (mm_charset);
34
35         /* US-ASCII is a subset of the ISO-8859-X character sets */
36         if (!strncasecmp("ISO-8859-", mm_charset, 9)) {
37             alt_charset = "US-ASCII";
38             alt_len = strlen (alt_charset);
39         }
40     }
41
42     /* Check if character set is OK */
43     if ((len == mm_len) && !strncasecmp(str, mm_charset, mm_len))
44         return 1;
45     if (alt_charset && (len == alt_len) && !strncasecmp(str, alt_charset, alt_len))
46         return 1;
47
48     return 0;
49 }
50
51
52 /*
53  * Return the name of the character set we are
54  * using for 8bit text.
55  */
56 char *
57 write_charset_8bit (void)
58 {
59     static char *mm_charset = NULL;
60
61     /*
62      * Cache the name of the character set to
63      * use for 8bit text.
64      */
65     if (!mm_charset && !(mm_charset = getenv ("MM_CHARSET")))
66             mm_charset = "x-unknown";
67
68     return mm_charset;
69 }