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