2 * charset.h - header file for general character set conversion
\r
6 #ifndef charset_charset_h
\r
7 #define charset_charset_h
\r
12 * Enumeration that lists all the multibyte or single-byte
\r
13 * character sets known to this library.
\r
16 CS_NONE, /* used for reporting errors, etc */
\r
18 CS_ISO8859_1_X11, /* X font encoding with VT100 glyphs */
\r
59 CS_MAC_CROATIAN_OLD,
\r
61 CS_MAC_ROMANIAN_OLD,
\r
63 CS_MAC_CYRILLIC_OLD,
\r
78 * Routine to convert a MB/SB character set to Unicode.
\r
80 * This routine accepts some number of bytes, updates a state
\r
81 * variable, and outputs some number of Unicode characters. There
\r
82 * are no guarantees. You can't even guarantee that at most one
\r
83 * Unicode character will be output per byte you feed in; for
\r
84 * example, suppose you're reading UTF-8, you've seen E1 80, and
\r
85 * then you suddenly see FE. Now you need to output _two_ error
\r
86 * characters - one for the incomplete sequence E1 80, and one for
\r
87 * the completely invalid UTF-8 byte FE.
\r
89 * Returns the number of wide characters output; will never output
\r
90 * more than the size of the buffer (as specified on input).
\r
91 * Advances the `input' pointer and decrements `inlen', to indicate
\r
92 * how far along the input string it got.
\r
94 * The sequence of `errlen' wide characters pointed to by `errstr'
\r
95 * will be used to indicate a conversion error. If `errstr' is
\r
96 * NULL, `errlen' will be ignored, and the library will choose
\r
97 * something sensible to do on its own. For Unicode, this will be
\r
98 * U+FFFD (REPLACEMENT CHARACTER).
\r
101 int charset_to_unicode(char **input, int *inlen, wchar_t *output, int outlen,
\r
102 int charset, charset_state *state,
\r
103 const wchar_t *errstr, int errlen);
\r
106 * Routine to convert Unicode to an MB/SB character set.
\r
108 * This routine accepts some number of Unicode characters, updates
\r
109 * a state variable, and outputs some number of bytes.
\r
111 * Returns the number of bytes characters output; will never output
\r
112 * more than the size of the buffer (as specified on input), and
\r
113 * will never output a partial MB character. Advances the `input'
\r
114 * pointer and decrements `inlen', to indicate how far along the
\r
115 * input string it got.
\r
117 * The sequence of `errlen' characters pointed to by `errstr' will
\r
118 * be used to indicate a conversion error. If `errstr' is NULL,
\r
119 * `errlen' will be ignored, and the library will choose something
\r
120 * sensible to do on its own (which will vary depending on the
\r
124 int charset_from_unicode(wchar_t **input, int *inlen, char *output, int outlen,
\r
125 int charset, charset_state *state,
\r
126 const char *errstr, int errlen);
\r
129 * Convert X11 encoding names to and from our charset identifiers.
\r
131 const char *charset_to_xenc(int charset);
\r
132 int charset_from_xenc(const char *name);
\r
135 * Convert MIME encoding names to and from our charset identifiers.
\r
137 const char *charset_to_mimeenc(int charset);
\r
138 int charset_from_mimeenc(const char *name);
\r
141 * Convert our own encoding names to and from our charset
\r
144 const char *charset_to_localenc(int charset);
\r
145 int charset_from_localenc(const char *name);
\r
146 int charset_localenc_nth(int n);
\r
149 * Convert Mac OS script/region/font to our charset identifiers.
\r
151 int charset_from_macenc(int script, int region, int sysvers,
\r
152 const char *fontname);
\r
154 #endif /* charset_charset_h */
\r