kiconv_latin1.h revision 5206:34f0b41fc3c5
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21/*
22 * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
23 * Use is subject to license terms.
24 */
25/*
26 * COPYRIGHT AND PERMISSION NOTICE
27 *
28 * Copyright (c) 1991-2006 Unicode, Inc. All rights reserved. Distributed under
29 * the Terms of Use in http://www.unicode.org/copyright.html.
30 *
31 * Permission is hereby granted, free of charge, to any person obtaining
32 * a copy of the Unicode data files and any associated documentation (the
33 * "Data Files") or Unicode software and any associated documentation (the
34 * "Software") to deal in the Data Files or Software without restriction,
35 * including without limitation the rights to use, copy, modify, merge,
36 * publish, distribute, and/or sell copies of the Data Files or Software, and
37 * to permit persons to whom the Data Files or Software are furnished to do so,
38 * provided that (a) the above copyright notice(s) and this permission notice
39 * appear with all copies of the Data Files or Software, (b) both the above
40 * copyright notice(s) and this permission notice appear in associated
41 * documentation, and (c) there is clear notice in each modified Data File or
42 * in the Software as well as in the documentation associated with the Data
43 * File(s) or Software that the data or software has been modified.
44 *
45 * THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
46 * KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
47 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
48 * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
49 * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
50 * CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
51 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
52 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
53 * OF THE DATA FILES OR SOFTWARE.
54 *
55 * Except as contained in this notice, the name of a copyright holder shall not
56 * be used in advertising or otherwise to promote the sale, use or other
57 * dealings in these Data Files or Software without prior written authorization
58 * of the copyright holder.
59 *
60 * Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be
61 * registered in some jurisdictions. All other trademarks and registered
62 * trademarks mentioned herein are the property of their respective owners.
63 */
64/*
65 * This file has been modified by Sun Microsystems, Inc.
66 */
67
68#ifndef _SYS_KICONV_LATIN1_H
69#define	_SYS_KICONV_LATIN1_H
70
71#pragma ident	"%Z%%M%	%I%	%E% SMI"
72
73#ifdef __cplusplus
74extern "C" {
75#endif
76
77#include <sys/kiconv.h>
78
79#ifdef	_KERNEL
80
81/*
82 * Mapping tables from CP1252, ISO 8859-1, ISO 8859-15, and CP850 to UTF-8.
83 *
84 * Indices are calculated by subtracting 0x80 from single byte character code
85 * values.
86 *
87 * Each component has up to three UTF-8 character bytes; the first byte will
88 * be used to figure out on how many bytes should be taken. If size figured
89 * out has a value less than zero, that means that component isn't valid and
90 * has no assigned character.
91 */
92static const kiconv_to_utf8_tbl_comp_t to_u8_tbl[4][128] = {
93	{	/* CP1252 -> UTF-8 */
94		{ 0xE2, 0x82, 0xAC },	/* 0x80 */
95		{ 0xFE, 0xFE, 0xFE },	/* 0x81 (illegal character) */
96		{ 0xE2, 0x80, 0x9A },	/* 0x82 */
97		{ 0xC6, 0x92, 0x00 },	/* 0x83 */
98		{ 0xE2, 0x80, 0x9E },	/* 0x84 */
99		{ 0xE2, 0x80, 0xA6 },	/* 0x85 */
100		{ 0xE2, 0x80, 0xA0 },	/* 0x86 */
101		{ 0xE2, 0x80, 0xA1 },	/* 0x87 */
102		{ 0xCB, 0x86, 0x00 },	/* 0x88 */
103		{ 0xE2, 0x80, 0xB0 },	/* 0x89 */
104		{ 0xC5, 0xA0, 0x00 },	/* 0x8A */
105		{ 0xE2, 0x80, 0xB9 },	/* 0x8B */
106		{ 0xC5, 0x92, 0x00 },	/* 0x8C */
107		{ 0xFE, 0xFE, 0xFE },	/* 0x8D (illegal character) */
108		{ 0xC5, 0xBD, 0x00 },	/* 0x8E */
109		{ 0xFE, 0xFE, 0xFE },	/* 0x8F (illegal character) */
110		{ 0xFE, 0xFE, 0xFE },	/* 0x90 (illegal character) */
111		{ 0xE2, 0x80, 0x98 },	/* 0x91 */
112		{ 0xE2, 0x80, 0x99 },	/* 0x92 */
113		{ 0xE2, 0x80, 0x9C },	/* 0x93 */
114		{ 0xE2, 0x80, 0x9D },	/* 0x94 */
115		{ 0xE2, 0x80, 0xA2 },	/* 0x95 */
116		{ 0xE2, 0x80, 0x93 },	/* 0x96 */
117		{ 0xE2, 0x80, 0x94 },	/* 0x97 */
118		{ 0xCB, 0x9C, 0x00 },	/* 0x98 */
119		{ 0xE2, 0x84, 0xA2 },	/* 0x99 */
120		{ 0xC5, 0xA1, 0x00 },	/* 0x9A */
121		{ 0xE2, 0x80, 0xBA },	/* 0x9B */
122		{ 0xC5, 0x93, 0x00 },	/* 0x9C */
123		{ 0xFE, 0xFE, 0xFE },	/* 0x9D (illegal character) */
124		{ 0xC5, 0xBE, 0x00 },	/* 0x9E */
125		{ 0xC5, 0xB8, 0x00 },	/* 0x9F */
126		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
127		{ 0xC2, 0xA1, 0x00 },	/* 0xA1 */
128		{ 0xC2, 0xA2, 0x00 },	/* 0xA2 */
129		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
130		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
131		{ 0xC2, 0xA5, 0x00 },	/* 0xA5 */
132		{ 0xC2, 0xA6, 0x00 },	/* 0xA6 */
133		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
134		{ 0xC2, 0xA8, 0x00 },	/* 0xA8 */
135		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
136		{ 0xC2, 0xAA, 0x00 },	/* 0xAA */
137		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
138		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
139		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
140		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
141		{ 0xC2, 0xAF, 0x00 },	/* 0xAF */
142		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
143		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
144		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
145		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
146		{ 0xC2, 0xB4, 0x00 },	/* 0xB4 */
147		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
148		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
149		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
150		{ 0xC2, 0xB8, 0x00 },	/* 0xB8 */
151		{ 0xC2, 0xB9, 0x00 },	/* 0xB9 */
152		{ 0xC2, 0xBA, 0x00 },	/* 0xBA */
153		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
154		{ 0xC2, 0xBC, 0x00 },	/* 0xBC */
155		{ 0xC2, 0xBD, 0x00 },	/* 0xBD */
156		{ 0xC2, 0xBE, 0x00 },	/* 0xBE */
157		{ 0xC2, 0xBF, 0x00 },	/* 0xBF */
158		{ 0xC3, 0x80, 0x00 },	/* 0xC0 */
159		{ 0xC3, 0x81, 0x00 },	/* 0xC1 */
160		{ 0xC3, 0x82, 0x00 },	/* 0xC2 */
161		{ 0xC3, 0x83, 0x00 },	/* 0xC3 */
162		{ 0xC3, 0x84, 0x00 },	/* 0xC4 */
163		{ 0xC3, 0x85, 0x00 },	/* 0xC5 */
164		{ 0xC3, 0x86, 0x00 },	/* 0xC6 */
165		{ 0xC3, 0x87, 0x00 },	/* 0xC7 */
166		{ 0xC3, 0x88, 0x00 },	/* 0xC8 */
167		{ 0xC3, 0x89, 0x00 },	/* 0xC9 */
168		{ 0xC3, 0x8A, 0x00 },	/* 0xCA */
169		{ 0xC3, 0x8B, 0x00 },	/* 0xCB */
170		{ 0xC3, 0x8C, 0x00 },	/* 0xCC */
171		{ 0xC3, 0x8D, 0x00 },	/* 0xCD */
172		{ 0xC3, 0x8E, 0x00 },	/* 0xCE */
173		{ 0xC3, 0x8F, 0x00 },	/* 0xCF */
174		{ 0xC3, 0x90, 0x00 },	/* 0xD0 */
175		{ 0xC3, 0x91, 0x00 },	/* 0xD1 */
176		{ 0xC3, 0x92, 0x00 },	/* 0xD2 */
177		{ 0xC3, 0x93, 0x00 },	/* 0xD3 */
178		{ 0xC3, 0x94, 0x00 },	/* 0xD4 */
179		{ 0xC3, 0x95, 0x00 },	/* 0xD5 */
180		{ 0xC3, 0x96, 0x00 },	/* 0xD6 */
181		{ 0xC3, 0x97, 0x00 },	/* 0xD7 */
182		{ 0xC3, 0x98, 0x00 },	/* 0xD8 */
183		{ 0xC3, 0x99, 0x00 },	/* 0xD9 */
184		{ 0xC3, 0x9A, 0x00 },	/* 0xDA */
185		{ 0xC3, 0x9B, 0x00 },	/* 0xDB */
186		{ 0xC3, 0x9C, 0x00 },	/* 0xDC */
187		{ 0xC3, 0x9D, 0x00 },	/* 0xDD */
188		{ 0xC3, 0x9E, 0x00 },	/* 0xDE */
189		{ 0xC3, 0x9F, 0x00 },	/* 0xDF */
190		{ 0xC3, 0xA0, 0x00 },	/* 0xE0 */
191		{ 0xC3, 0xA1, 0x00 },	/* 0xE1 */
192		{ 0xC3, 0xA2, 0x00 },	/* 0xE2 */
193		{ 0xC3, 0xA3, 0x00 },	/* 0xE3 */
194		{ 0xC3, 0xA4, 0x00 },	/* 0xE4 */
195		{ 0xC3, 0xA5, 0x00 },	/* 0xE5 */
196		{ 0xC3, 0xA6, 0x00 },	/* 0xE6 */
197		{ 0xC3, 0xA7, 0x00 },	/* 0xE7 */
198		{ 0xC3, 0xA8, 0x00 },	/* 0xE8 */
199		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
200		{ 0xC3, 0xAA, 0x00 },	/* 0xEA */
201		{ 0xC3, 0xAB, 0x00 },	/* 0xEB */
202		{ 0xC3, 0xAC, 0x00 },	/* 0xEC */
203		{ 0xC3, 0xAD, 0x00 },	/* 0xED */
204		{ 0xC3, 0xAE, 0x00 },	/* 0xEE */
205		{ 0xC3, 0xAF, 0x00 },	/* 0xEF */
206		{ 0xC3, 0xB0, 0x00 },	/* 0xF0 */
207		{ 0xC3, 0xB1, 0x00 },	/* 0xF1 */
208		{ 0xC3, 0xB2, 0x00 },	/* 0xF2 */
209		{ 0xC3, 0xB3, 0x00 },	/* 0xF3 */
210		{ 0xC3, 0xB4, 0x00 },	/* 0xF4 */
211		{ 0xC3, 0xB5, 0x00 },	/* 0xF5 */
212		{ 0xC3, 0xB6, 0x00 },	/* 0xF6 */
213		{ 0xC3, 0xB7, 0x00 },	/* 0xF7 */
214		{ 0xC3, 0xB8, 0x00 },	/* 0xF8 */
215		{ 0xC3, 0xB9, 0x00 },	/* 0xF9 */
216		{ 0xC3, 0xBA, 0x00 },	/* 0xFA */
217		{ 0xC3, 0xBB, 0x00 },	/* 0xFB */
218		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
219		{ 0xC3, 0xBD, 0x00 },	/* 0xFD */
220		{ 0xC3, 0xBE, 0x00 },	/* 0xFE */
221		{ 0xC3, 0xBF, 0x00 },	/* 0xFF */
222	},
223	{	/* ISO 8859-1 -> UTF-8 */
224		{ 0xC2, 0x80, 0x00 },	/* 0x80 */
225		{ 0xC2, 0x81, 0x00 },	/* 0x81 */
226		{ 0xC2, 0x82, 0x00 },	/* 0x82 */
227		{ 0xC2, 0x83, 0x00 },	/* 0x83 */
228		{ 0xC2, 0x84, 0x00 },	/* 0x84 */
229		{ 0xC2, 0x85, 0x00 },	/* 0x85 */
230		{ 0xC2, 0x86, 0x00 },	/* 0x86 */
231		{ 0xC2, 0x87, 0x00 },	/* 0x87 */
232		{ 0xC2, 0x88, 0x00 },	/* 0x88 */
233		{ 0xC2, 0x89, 0x00 },	/* 0x89 */
234		{ 0xC2, 0x8A, 0x00 },	/* 0x8A */
235		{ 0xC2, 0x8B, 0x00 },	/* 0x8B */
236		{ 0xC2, 0x8C, 0x00 },	/* 0x8C */
237		{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
238		{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
239		{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
240		{ 0xC2, 0x90, 0x00 },	/* 0x90 */
241		{ 0xC2, 0x91, 0x00 },	/* 0x91 */
242		{ 0xC2, 0x92, 0x00 },	/* 0x92 */
243		{ 0xC2, 0x93, 0x00 },	/* 0x93 */
244		{ 0xC2, 0x94, 0x00 },	/* 0x94 */
245		{ 0xC2, 0x95, 0x00 },	/* 0x95 */
246		{ 0xC2, 0x96, 0x00 },	/* 0x96 */
247		{ 0xC2, 0x97, 0x00 },	/* 0x97 */
248		{ 0xC2, 0x98, 0x00 },	/* 0x98 */
249		{ 0xC2, 0x99, 0x00 },	/* 0x99 */
250		{ 0xC2, 0x9A, 0x00 },	/* 0x9A */
251		{ 0xC2, 0x9B, 0x00 },	/* 0x9B */
252		{ 0xC2, 0x9C, 0x00 },	/* 0x9C */
253		{ 0xC2, 0x9D, 0x00 },	/* 0x9D */
254		{ 0xC2, 0x9E, 0x00 },	/* 0x9E */
255		{ 0xC2, 0x9F, 0x00 },	/* 0x9F */
256		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
257		{ 0xC2, 0xA1, 0x00 },	/* 0xA1 */
258		{ 0xC2, 0xA2, 0x00 },	/* 0xA2 */
259		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
260		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
261		{ 0xC2, 0xA5, 0x00 },	/* 0xA5 */
262		{ 0xC2, 0xA6, 0x00 },	/* 0xA6 */
263		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
264		{ 0xC2, 0xA8, 0x00 },	/* 0xA8 */
265		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
266		{ 0xC2, 0xAA, 0x00 },	/* 0xAA */
267		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
268		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
269		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
270		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
271		{ 0xC2, 0xAF, 0x00 },	/* 0xAF */
272		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
273		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
274		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
275		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
276		{ 0xC2, 0xB4, 0x00 },	/* 0xB4 */
277		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
278		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
279		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
280		{ 0xC2, 0xB8, 0x00 },	/* 0xB8 */
281		{ 0xC2, 0xB9, 0x00 },	/* 0xB9 */
282		{ 0xC2, 0xBA, 0x00 },	/* 0xBA */
283		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
284		{ 0xC2, 0xBC, 0x00 },	/* 0xBC */
285		{ 0xC2, 0xBD, 0x00 },	/* 0xBD */
286		{ 0xC2, 0xBE, 0x00 },	/* 0xBE */
287		{ 0xC2, 0xBF, 0x00 },	/* 0xBF */
288		{ 0xC3, 0x80, 0x00 },	/* 0xC0 */
289		{ 0xC3, 0x81, 0x00 },	/* 0xC1 */
290		{ 0xC3, 0x82, 0x00 },	/* 0xC2 */
291		{ 0xC3, 0x83, 0x00 },	/* 0xC3 */
292		{ 0xC3, 0x84, 0x00 },	/* 0xC4 */
293		{ 0xC3, 0x85, 0x00 },	/* 0xC5 */
294		{ 0xC3, 0x86, 0x00 },	/* 0xC6 */
295		{ 0xC3, 0x87, 0x00 },	/* 0xC7 */
296		{ 0xC3, 0x88, 0x00 },	/* 0xC8 */
297		{ 0xC3, 0x89, 0x00 },	/* 0xC9 */
298		{ 0xC3, 0x8A, 0x00 },	/* 0xCA */
299		{ 0xC3, 0x8B, 0x00 },	/* 0xCB */
300		{ 0xC3, 0x8C, 0x00 },	/* 0xCC */
301		{ 0xC3, 0x8D, 0x00 },	/* 0xCD */
302		{ 0xC3, 0x8E, 0x00 },	/* 0xCE */
303		{ 0xC3, 0x8F, 0x00 },	/* 0xCF */
304		{ 0xC3, 0x90, 0x00 },	/* 0xD0 */
305		{ 0xC3, 0x91, 0x00 },	/* 0xD1 */
306		{ 0xC3, 0x92, 0x00 },	/* 0xD2 */
307		{ 0xC3, 0x93, 0x00 },	/* 0xD3 */
308		{ 0xC3, 0x94, 0x00 },	/* 0xD4 */
309		{ 0xC3, 0x95, 0x00 },	/* 0xD5 */
310		{ 0xC3, 0x96, 0x00 },	/* 0xD6 */
311		{ 0xC3, 0x97, 0x00 },	/* 0xD7 */
312		{ 0xC3, 0x98, 0x00 },	/* 0xD8 */
313		{ 0xC3, 0x99, 0x00 },	/* 0xD9 */
314		{ 0xC3, 0x9A, 0x00 },	/* 0xDA */
315		{ 0xC3, 0x9B, 0x00 },	/* 0xDB */
316		{ 0xC3, 0x9C, 0x00 },	/* 0xDC */
317		{ 0xC3, 0x9D, 0x00 },	/* 0xDD */
318		{ 0xC3, 0x9E, 0x00 },	/* 0xDE */
319		{ 0xC3, 0x9F, 0x00 },	/* 0xDF */
320		{ 0xC3, 0xA0, 0x00 },	/* 0xE0 */
321		{ 0xC3, 0xA1, 0x00 },	/* 0xE1 */
322		{ 0xC3, 0xA2, 0x00 },	/* 0xE2 */
323		{ 0xC3, 0xA3, 0x00 },	/* 0xE3 */
324		{ 0xC3, 0xA4, 0x00 },	/* 0xE4 */
325		{ 0xC3, 0xA5, 0x00 },	/* 0xE5 */
326		{ 0xC3, 0xA6, 0x00 },	/* 0xE6 */
327		{ 0xC3, 0xA7, 0x00 },	/* 0xE7 */
328		{ 0xC3, 0xA8, 0x00 },	/* 0xE8 */
329		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
330		{ 0xC3, 0xAA, 0x00 },	/* 0xEA */
331		{ 0xC3, 0xAB, 0x00 },	/* 0xEB */
332		{ 0xC3, 0xAC, 0x00 },	/* 0xEC */
333		{ 0xC3, 0xAD, 0x00 },	/* 0xED */
334		{ 0xC3, 0xAE, 0x00 },	/* 0xEE */
335		{ 0xC3, 0xAF, 0x00 },	/* 0xEF */
336		{ 0xC3, 0xB0, 0x00 },	/* 0xF0 */
337		{ 0xC3, 0xB1, 0x00 },	/* 0xF1 */
338		{ 0xC3, 0xB2, 0x00 },	/* 0xF2 */
339		{ 0xC3, 0xB3, 0x00 },	/* 0xF3 */
340		{ 0xC3, 0xB4, 0x00 },	/* 0xF4 */
341		{ 0xC3, 0xB5, 0x00 },	/* 0xF5 */
342		{ 0xC3, 0xB6, 0x00 },	/* 0xF6 */
343		{ 0xC3, 0xB7, 0x00 },	/* 0xF7 */
344		{ 0xC3, 0xB8, 0x00 },	/* 0xF8 */
345		{ 0xC3, 0xB9, 0x00 },	/* 0xF9 */
346		{ 0xC3, 0xBA, 0x00 },	/* 0xFA */
347		{ 0xC3, 0xBB, 0x00 },	/* 0xFB */
348		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
349		{ 0xC3, 0xBD, 0x00 },	/* 0xFD */
350		{ 0xC3, 0xBE, 0x00 },	/* 0xFE */
351		{ 0xC3, 0xBF, 0x00 },	/* 0xFF */
352	},
353	{	/* ISO 8859-15 -> UTF-8 */
354		{ 0xC2, 0x80, 0x00 },	/* 0x80 */
355		{ 0xC2, 0x81, 0x00 },	/* 0x81 */
356		{ 0xC2, 0x82, 0x00 },	/* 0x82 */
357		{ 0xC2, 0x83, 0x00 },	/* 0x83 */
358		{ 0xC2, 0x84, 0x00 },	/* 0x84 */
359		{ 0xC2, 0x85, 0x00 },	/* 0x85 */
360		{ 0xC2, 0x86, 0x00 },	/* 0x86 */
361		{ 0xC2, 0x87, 0x00 },	/* 0x87 */
362		{ 0xC2, 0x88, 0x00 },	/* 0x88 */
363		{ 0xC2, 0x89, 0x00 },	/* 0x89 */
364		{ 0xC2, 0x8A, 0x00 },	/* 0x8A */
365		{ 0xC2, 0x8B, 0x00 },	/* 0x8B */
366		{ 0xC2, 0x8C, 0x00 },	/* 0x8C */
367		{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
368		{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
369		{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
370		{ 0xC2, 0x90, 0x00 },	/* 0x90 */
371		{ 0xC2, 0x91, 0x00 },	/* 0x91 */
372		{ 0xC2, 0x92, 0x00 },	/* 0x92 */
373		{ 0xC2, 0x93, 0x00 },	/* 0x93 */
374		{ 0xC2, 0x94, 0x00 },	/* 0x94 */
375		{ 0xC2, 0x95, 0x00 },	/* 0x95 */
376		{ 0xC2, 0x96, 0x00 },	/* 0x96 */
377		{ 0xC2, 0x97, 0x00 },	/* 0x97 */
378		{ 0xC2, 0x98, 0x00 },	/* 0x98 */
379		{ 0xC2, 0x99, 0x00 },	/* 0x99 */
380		{ 0xC2, 0x9A, 0x00 },	/* 0x9A */
381		{ 0xC2, 0x9B, 0x00 },	/* 0x9B */
382		{ 0xC2, 0x9C, 0x00 },	/* 0x9C */
383		{ 0xC2, 0x9D, 0x00 },	/* 0x9D */
384		{ 0xC2, 0x9E, 0x00 },	/* 0x9E */
385		{ 0xC2, 0x9F, 0x00 },	/* 0x9F */
386		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
387		{ 0xC2, 0xA1, 0x00 },	/* 0xA1 */
388		{ 0xC2, 0xA2, 0x00 },	/* 0xA2 */
389		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
390		{ 0xE2, 0x82, 0xAC },	/* 0xA4 */
391		{ 0xC2, 0xA5, 0x00 },	/* 0xA5 */
392		{ 0xC5, 0xA0, 0x00 },	/* 0xA6 */
393		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
394		{ 0xC5, 0xA1, 0x00 },	/* 0xA8 */
395		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
396		{ 0xC2, 0xAA, 0x00 },	/* 0xAA */
397		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
398		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
399		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
400		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
401		{ 0xC2, 0xAF, 0x00 },	/* 0xAF */
402		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
403		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
404		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
405		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
406		{ 0xC5, 0xBD, 0x00 },	/* 0xB4 */
407		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
408		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
409		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
410		{ 0xC5, 0xBE, 0x00 },	/* 0xB8 */
411		{ 0xC2, 0xB9, 0x00 },	/* 0xB9 */
412		{ 0xC2, 0xBA, 0x00 },	/* 0xBA */
413		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
414		{ 0xC5, 0x92, 0x00 },	/* 0xBC */
415		{ 0xC5, 0x93, 0x00 },	/* 0xBD */
416		{ 0xC5, 0xB8, 0x00 },	/* 0xBE */
417		{ 0xC2, 0xBF, 0x00 },	/* 0xBF */
418		{ 0xC3, 0x80, 0x00 },	/* 0xC0 */
419		{ 0xC3, 0x81, 0x00 },	/* 0xC1 */
420		{ 0xC3, 0x82, 0x00 },	/* 0xC2 */
421		{ 0xC3, 0x83, 0x00 },	/* 0xC3 */
422		{ 0xC3, 0x84, 0x00 },	/* 0xC4 */
423		{ 0xC3, 0x85, 0x00 },	/* 0xC5 */
424		{ 0xC3, 0x86, 0x00 },	/* 0xC6 */
425		{ 0xC3, 0x87, 0x00 },	/* 0xC7 */
426		{ 0xC3, 0x88, 0x00 },	/* 0xC8 */
427		{ 0xC3, 0x89, 0x00 },	/* 0xC9 */
428		{ 0xC3, 0x8A, 0x00 },	/* 0xCA */
429		{ 0xC3, 0x8B, 0x00 },	/* 0xCB */
430		{ 0xC3, 0x8C, 0x00 },	/* 0xCC */
431		{ 0xC3, 0x8D, 0x00 },	/* 0xCD */
432		{ 0xC3, 0x8E, 0x00 },	/* 0xCE */
433		{ 0xC3, 0x8F, 0x00 },	/* 0xCF */
434		{ 0xC3, 0x90, 0x00 },	/* 0xD0 */
435		{ 0xC3, 0x91, 0x00 },	/* 0xD1 */
436		{ 0xC3, 0x92, 0x00 },	/* 0xD2 */
437		{ 0xC3, 0x93, 0x00 },	/* 0xD3 */
438		{ 0xC3, 0x94, 0x00 },	/* 0xD4 */
439		{ 0xC3, 0x95, 0x00 },	/* 0xD5 */
440		{ 0xC3, 0x96, 0x00 },	/* 0xD6 */
441		{ 0xC3, 0x97, 0x00 },	/* 0xD7 */
442		{ 0xC3, 0x98, 0x00 },	/* 0xD8 */
443		{ 0xC3, 0x99, 0x00 },	/* 0xD9 */
444		{ 0xC3, 0x9A, 0x00 },	/* 0xDA */
445		{ 0xC3, 0x9B, 0x00 },	/* 0xDB */
446		{ 0xC3, 0x9C, 0x00 },	/* 0xDC */
447		{ 0xC3, 0x9D, 0x00 },	/* 0xDD */
448		{ 0xC3, 0x9E, 0x00 },	/* 0xDE */
449		{ 0xC3, 0x9F, 0x00 },	/* 0xDF */
450		{ 0xC3, 0xA0, 0x00 },	/* 0xE0 */
451		{ 0xC3, 0xA1, 0x00 },	/* 0xE1 */
452		{ 0xC3, 0xA2, 0x00 },	/* 0xE2 */
453		{ 0xC3, 0xA3, 0x00 },	/* 0xE3 */
454		{ 0xC3, 0xA4, 0x00 },	/* 0xE4 */
455		{ 0xC3, 0xA5, 0x00 },	/* 0xE5 */
456		{ 0xC3, 0xA6, 0x00 },	/* 0xE6 */
457		{ 0xC3, 0xA7, 0x00 },	/* 0xE7 */
458		{ 0xC3, 0xA8, 0x00 },	/* 0xE8 */
459		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
460		{ 0xC3, 0xAA, 0x00 },	/* 0xEA */
461		{ 0xC3, 0xAB, 0x00 },	/* 0xEB */
462		{ 0xC3, 0xAC, 0x00 },	/* 0xEC */
463		{ 0xC3, 0xAD, 0x00 },	/* 0xED */
464		{ 0xC3, 0xAE, 0x00 },	/* 0xEE */
465		{ 0xC3, 0xAF, 0x00 },	/* 0xEF */
466		{ 0xC3, 0xB0, 0x00 },	/* 0xF0 */
467		{ 0xC3, 0xB1, 0x00 },	/* 0xF1 */
468		{ 0xC3, 0xB2, 0x00 },	/* 0xF2 */
469		{ 0xC3, 0xB3, 0x00 },	/* 0xF3 */
470		{ 0xC3, 0xB4, 0x00 },	/* 0xF4 */
471		{ 0xC3, 0xB5, 0x00 },	/* 0xF5 */
472		{ 0xC3, 0xB6, 0x00 },	/* 0xF6 */
473		{ 0xC3, 0xB7, 0x00 },	/* 0xF7 */
474		{ 0xC3, 0xB8, 0x00 },	/* 0xF8 */
475		{ 0xC3, 0xB9, 0x00 },	/* 0xF9 */
476		{ 0xC3, 0xBA, 0x00 },	/* 0xFA */
477		{ 0xC3, 0xBB, 0x00 },	/* 0xFB */
478		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
479		{ 0xC3, 0xBD, 0x00 },	/* 0xFD */
480		{ 0xC3, 0xBE, 0x00 },	/* 0xFE */
481		{ 0xC3, 0xBF, 0x00 },	/* 0xFF */
482	},
483	{	/* CP850 -> UTF-8 */
484		{ 0xC3, 0x87, 0x00 },	/* 0x80 */
485		{ 0xC3, 0xBC, 0x00 },	/* 0x81 */
486		{ 0xC3, 0xA9, 0x00 },	/* 0x82 */
487		{ 0xC3, 0xA2, 0x00 },	/* 0x83 */
488		{ 0xC3, 0xA4, 0x00 },	/* 0x84 */
489		{ 0xC3, 0xA0, 0x00 },	/* 0x85 */
490		{ 0xC3, 0xA5, 0x00 },	/* 0x86 */
491		{ 0xC3, 0xA7, 0x00 },	/* 0x87 */
492		{ 0xC3, 0xAA, 0x00 },	/* 0x88 */
493		{ 0xC3, 0xAB, 0x00 },	/* 0x89 */
494		{ 0xC3, 0xA8, 0x00 },	/* 0x8A */
495		{ 0xC3, 0xAF, 0x00 },	/* 0x8B */
496		{ 0xC3, 0xAE, 0x00 },	/* 0x8C */
497		{ 0xC3, 0xAC, 0x00 },	/* 0x8D */
498		{ 0xC3, 0x84, 0x00 },	/* 0x8E */
499		{ 0xC3, 0x85, 0x00 },	/* 0x8F */
500		{ 0xC3, 0x89, 0x00 },	/* 0x90 */
501		{ 0xC3, 0xA6, 0x00 },	/* 0x91 */
502		{ 0xC3, 0x86, 0x00 },	/* 0x92 */
503		{ 0xC3, 0xB4, 0x00 },	/* 0x93 */
504		{ 0xC3, 0xB6, 0x00 },	/* 0x94 */
505		{ 0xC3, 0xB2, 0x00 },	/* 0x95 */
506		{ 0xC3, 0xBB, 0x00 },	/* 0x96 */
507		{ 0xC3, 0xB9, 0x00 },	/* 0x97 */
508		{ 0xC3, 0xBF, 0x00 },	/* 0x98 */
509		{ 0xC3, 0x96, 0x00 },	/* 0x99 */
510		{ 0xC3, 0x9C, 0x00 },	/* 0x9A */
511		{ 0xC3, 0xB8, 0x00 },	/* 0x9B */
512		{ 0xC2, 0xA3, 0x00 },	/* 0x9C */
513		{ 0xC3, 0x98, 0x00 },	/* 0x9D */
514		{ 0xC3, 0x97, 0x00 },	/* 0x9E */
515		{ 0xC6, 0x92, 0x00 },	/* 0x9F */
516		{ 0xC3, 0xA1, 0x00 },	/* 0xA0 */
517		{ 0xC3, 0xAD, 0x00 },	/* 0xA1 */
518		{ 0xC3, 0xB3, 0x00 },	/* 0xA2 */
519		{ 0xC3, 0xBA, 0x00 },	/* 0xA3 */
520		{ 0xC3, 0xB1, 0x00 },	/* 0xA4 */
521		{ 0xC3, 0x91, 0x00 },	/* 0xA5 */
522		{ 0xC2, 0xAA, 0x00 },	/* 0xA6 */
523		{ 0xC2, 0xBA, 0x00 },	/* 0xA7 */
524		{ 0xC2, 0xBF, 0x00 },	/* 0xA8 */
525		{ 0xC2, 0xAE, 0x00 },	/* 0xA9 */
526		{ 0xC2, 0xAC, 0x00 },	/* 0xAA */
527		{ 0xC2, 0xBD, 0x00 },	/* 0xAB */
528		{ 0xC2, 0xBC, 0x00 },	/* 0xAC */
529		{ 0xC2, 0xA1, 0x00 },	/* 0xAD */
530		{ 0xC2, 0xAB, 0x00 },	/* 0xAE */
531		{ 0xC2, 0xBB, 0x00 },	/* 0xAF */
532		{ 0xE2, 0x96, 0x91 },	/* 0xB0 */
533		{ 0xE2, 0x96, 0x92 },	/* 0xB1 */
534		{ 0xE2, 0x96, 0x93 },	/* 0xB2 */
535		{ 0xE2, 0x94, 0x82 },	/* 0xB3 */
536		{ 0xE2, 0x94, 0xA4 },	/* 0xB4 */
537		{ 0xC3, 0x81, 0x00 },	/* 0xB5 */
538		{ 0xC3, 0x82, 0x00 },	/* 0xB6 */
539		{ 0xC3, 0x80, 0x00 },	/* 0xB7 */
540		{ 0xC2, 0xA9, 0x00 },	/* 0xB8 */
541		{ 0xE2, 0x95, 0xA3 },	/* 0xB9 */
542		{ 0xE2, 0x95, 0x91 },	/* 0xBA */
543		{ 0xE2, 0x95, 0x97 },	/* 0xBB */
544		{ 0xE2, 0x95, 0x9D },	/* 0xBC */
545		{ 0xC2, 0xA2, 0x00 },	/* 0xBD */
546		{ 0xC2, 0xA5, 0x00 },	/* 0xBE */
547		{ 0xE2, 0x94, 0x90 },	/* 0xBF */
548		{ 0xE2, 0x94, 0x94 },	/* 0xC0 */
549		{ 0xE2, 0x94, 0xB4 },	/* 0xC1 */
550		{ 0xE2, 0x94, 0xAC },	/* 0xC2 */
551		{ 0xE2, 0x94, 0x9C },	/* 0xC3 */
552		{ 0xE2, 0x94, 0x80 },	/* 0xC4 */
553		{ 0xE2, 0x94, 0xBC },	/* 0xC5 */
554		{ 0xC3, 0xA3, 0x00 },	/* 0xC6 */
555		{ 0xC3, 0x83, 0x00 },	/* 0xC7 */
556		{ 0xE2, 0x95, 0x9A },	/* 0xC8 */
557		{ 0xE2, 0x95, 0x94 },	/* 0xC9 */
558		{ 0xE2, 0x95, 0xA9 },	/* 0xCA */
559		{ 0xE2, 0x95, 0xA6 },	/* 0xCB */
560		{ 0xE2, 0x95, 0xA0 },	/* 0xCC */
561		{ 0xE2, 0x95, 0x90 },	/* 0xCD */
562		{ 0xE2, 0x95, 0xAC },	/* 0xCE */
563		{ 0xC2, 0xA4, 0x00 },	/* 0xCF */
564		{ 0xC3, 0xB0, 0x00 },	/* 0xD0 */
565		{ 0xC3, 0x90, 0x00 },	/* 0xD1 */
566		{ 0xC3, 0x8A, 0x00 },	/* 0xD2 */
567		{ 0xC3, 0x8B, 0x00 },	/* 0xD3 */
568		{ 0xC3, 0x88, 0x00 },	/* 0xD4 */
569		{ 0xC4, 0xB1, 0x00 },	/* 0xD5 */
570		{ 0xC3, 0x8D, 0x00 },	/* 0xD6 */
571		{ 0xC3, 0x8E, 0x00 },	/* 0xD7 */
572		{ 0xC3, 0x8F, 0x00 },	/* 0xD8 */
573		{ 0xE2, 0x94, 0x98 },	/* 0xD9 */
574		{ 0xE2, 0x94, 0x8C },	/* 0xDA */
575		{ 0xE2, 0x96, 0x88 },	/* 0xDB */
576		{ 0xE2, 0x96, 0x84 },	/* 0xDC */
577		{ 0xC2, 0xA6, 0x00 },	/* 0xDD */
578		{ 0xC3, 0x8C, 0x00 },	/* 0xDE */
579		{ 0xE2, 0x96, 0x80 },	/* 0xDF */
580		{ 0xC3, 0x93, 0x00 },	/* 0xE0 */
581		{ 0xC3, 0x9F, 0x00 },	/* 0xE1 */
582		{ 0xC3, 0x94, 0x00 },	/* 0xE2 */
583		{ 0xC3, 0x92, 0x00 },	/* 0xE3 */
584		{ 0xC3, 0xB5, 0x00 },	/* 0xE4 */
585		{ 0xC3, 0x95, 0x00 },	/* 0xE5 */
586		{ 0xC2, 0xB5, 0x00 },	/* 0xE6 */
587		{ 0xC3, 0xBE, 0x00 },	/* 0xE7 */
588		{ 0xC3, 0x9E, 0x00 },	/* 0xE8 */
589		{ 0xC3, 0x9A, 0x00 },	/* 0xE9 */
590		{ 0xC3, 0x9B, 0x00 },	/* 0xEA */
591		{ 0xC3, 0x99, 0x00 },	/* 0xEB */
592		{ 0xC3, 0xBD, 0x00 },	/* 0xEC */
593		{ 0xC3, 0x9D, 0x00 },	/* 0xED */
594		{ 0xC2, 0xAF, 0x00 },	/* 0xEE */
595		{ 0xC2, 0xB4, 0x00 },	/* 0xEF */
596		{ 0xC2, 0xAD, 0x00 },	/* 0xF0 */
597		{ 0xC2, 0xB1, 0x00 },	/* 0xF1 */
598		{ 0xE2, 0x80, 0x97 },	/* 0xF2 */
599		{ 0xC2, 0xBE, 0x00 },	/* 0xF3 */
600		{ 0xC2, 0xB6, 0x00 },	/* 0xF4 */
601		{ 0xC2, 0xA7, 0x00 },	/* 0xF5 */
602		{ 0xC3, 0xB7, 0x00 },	/* 0xF6 */
603		{ 0xC2, 0xB8, 0x00 },	/* 0xF7 */
604		{ 0xC2, 0xB0, 0x00 },	/* 0xF8 */
605		{ 0xC2, 0xA8, 0x00 },	/* 0xF9 */
606		{ 0xC2, 0xB7, 0x00 },	/* 0xFA */
607		{ 0xC2, 0xB9, 0x00 },	/* 0xFB */
608		{ 0xC2, 0xB3, 0x00 },	/* 0xFC */
609		{ 0xC2, 0xB2, 0x00 },	/* 0xFD */
610		{ 0xE2, 0x96, 0xA0 },	/* 0xFE */
611		{ 0xC2, 0xA0, 0x00 },	/* 0xFF */
612	}
613};
614
615/*
616 * Mapping tables from UTF-8 to CP1252, ISO 8859-1, ISO 8859-15, and CP850.
617 *
618 * Each table is sorted with UTF-8 values to be used with binary search.
619 * UTF-8 character byte values are saved at uint32_t:24 contiguously as
620 * scalar values.
621 */
622static const kiconv_to_sb_tbl_comp_t to_sb_tbl[4][128] = {
623	{	/* UTF-8 -> CP1252 */
624		{ 0x00C2A0, 0xA0 },
625		{ 0x00C2A1, 0xA1 },
626		{ 0x00C2A2, 0xA2 },
627		{ 0x00C2A3, 0xA3 },
628		{ 0x00C2A4, 0xA4 },
629		{ 0x00C2A5, 0xA5 },
630		{ 0x00C2A6, 0xA6 },
631		{ 0x00C2A7, 0xA7 },
632		{ 0x00C2A8, 0xA8 },
633		{ 0x00C2A9, 0xA9 },
634		{ 0x00C2AA, 0xAA },
635		{ 0x00C2AB, 0xAB },
636		{ 0x00C2AC, 0xAC },
637		{ 0x00C2AD, 0xAD },
638		{ 0x00C2AE, 0xAE },
639		{ 0x00C2AF, 0xAF },
640		{ 0x00C2B0, 0xB0 },
641		{ 0x00C2B1, 0xB1 },
642		{ 0x00C2B2, 0xB2 },
643		{ 0x00C2B3, 0xB3 },
644		{ 0x00C2B4, 0xB4 },
645		{ 0x00C2B5, 0xB5 },
646		{ 0x00C2B6, 0xB6 },
647		{ 0x00C2B7, 0xB7 },
648		{ 0x00C2B8, 0xB8 },
649		{ 0x00C2B9, 0xB9 },
650		{ 0x00C2BA, 0xBA },
651		{ 0x00C2BB, 0xBB },
652		{ 0x00C2BC, 0xBC },
653		{ 0x00C2BD, 0xBD },
654		{ 0x00C2BE, 0xBE },
655		{ 0x00C2BF, 0xBF },
656		{ 0x00C380, 0xC0 },
657		{ 0x00C381, 0xC1 },
658		{ 0x00C382, 0xC2 },
659		{ 0x00C383, 0xC3 },
660		{ 0x00C384, 0xC4 },
661		{ 0x00C385, 0xC5 },
662		{ 0x00C386, 0xC6 },
663		{ 0x00C387, 0xC7 },
664		{ 0x00C388, 0xC8 },
665		{ 0x00C389, 0xC9 },
666		{ 0x00C38A, 0xCA },
667		{ 0x00C38B, 0xCB },
668		{ 0x00C38C, 0xCC },
669		{ 0x00C38D, 0xCD },
670		{ 0x00C38E, 0xCE },
671		{ 0x00C38F, 0xCF },
672		{ 0x00C390, 0xD0 },
673		{ 0x00C391, 0xD1 },
674		{ 0x00C392, 0xD2 },
675		{ 0x00C393, 0xD3 },
676		{ 0x00C394, 0xD4 },
677		{ 0x00C395, 0xD5 },
678		{ 0x00C396, 0xD6 },
679		{ 0x00C397, 0xD7 },
680		{ 0x00C398, 0xD8 },
681		{ 0x00C399, 0xD9 },
682		{ 0x00C39A, 0xDA },
683		{ 0x00C39B, 0xDB },
684		{ 0x00C39C, 0xDC },
685		{ 0x00C39D, 0xDD },
686		{ 0x00C39E, 0xDE },
687		{ 0x00C39F, 0xDF },
688		{ 0x00C3A0, 0xE0 },
689		{ 0x00C3A1, 0xE1 },
690		{ 0x00C3A2, 0xE2 },
691		{ 0x00C3A3, 0xE3 },
692		{ 0x00C3A4, 0xE4 },
693		{ 0x00C3A5, 0xE5 },
694		{ 0x00C3A6, 0xE6 },
695		{ 0x00C3A7, 0xE7 },
696		{ 0x00C3A8, 0xE8 },
697		{ 0x00C3A9, 0xE9 },
698		{ 0x00C3AA, 0xEA },
699		{ 0x00C3AB, 0xEB },
700		{ 0x00C3AC, 0xEC },
701		{ 0x00C3AD, 0xED },
702		{ 0x00C3AE, 0xEE },
703		{ 0x00C3AF, 0xEF },
704		{ 0x00C3B0, 0xF0 },
705		{ 0x00C3B1, 0xF1 },
706		{ 0x00C3B2, 0xF2 },
707		{ 0x00C3B3, 0xF3 },
708		{ 0x00C3B4, 0xF4 },
709		{ 0x00C3B5, 0xF5 },
710		{ 0x00C3B6, 0xF6 },
711		{ 0x00C3B7, 0xF7 },
712		{ 0x00C3B8, 0xF8 },
713		{ 0x00C3B9, 0xF9 },
714		{ 0x00C3BA, 0xFA },
715		{ 0x00C3BB, 0xFB },
716		{ 0x00C3BC, 0xFC },
717		{ 0x00C3BD, 0xFD },
718		{ 0x00C3BE, 0xFE },
719		{ 0x00C3BF, 0xFF },
720		{ 0x00C592, 0x8C },
721		{ 0x00C593, 0x9C },
722		{ 0x00C5A0, 0x8A },
723		{ 0x00C5A1, 0x9A },
724		{ 0x00C5B8, 0x9F },
725		{ 0x00C5BD, 0x8E },
726		{ 0x00C5BE, 0x9E },
727		{ 0x00C692, 0x83 },
728		{ 0x00CB86, 0x88 },
729		{ 0x00CB9C, 0x98 },
730		{ 0xE28093, 0x96 },
731		{ 0xE28094, 0x97 },
732		{ 0xE28098, 0x91 },
733		{ 0xE28099, 0x92 },
734		{ 0xE2809A, 0x82 },
735		{ 0xE2809C, 0x93 },
736		{ 0xE2809D, 0x94 },
737		{ 0xE2809E, 0x84 },
738		{ 0xE280A0, 0x86 },
739		{ 0xE280A1, 0x87 },
740		{ 0xE280A2, 0x95 },
741		{ 0xE280A6, 0x85 },
742		{ 0xE280B0, 0x89 },
743		{ 0xE280B9, 0x8B },
744		{ 0xE280BA, 0x9B },
745		{ 0xE282AC, 0x80 },
746		{ 0xE284A2, 0x99 },
747		{ 0xFFFFFF, 0x00 },
748		{ 0xFFFFFF, 0x00 },
749		{ 0xFFFFFF, 0x00 },
750		{ 0xFFFFFF, 0x00 },
751		{ 0xFFFFFF, 0x00 },
752	},
753	{	/* UTF-8 -> ISO 8859-1 */
754		{ 0x00C280, 0x80 },
755		{ 0x00C281, 0x81 },
756		{ 0x00C282, 0x82 },
757		{ 0x00C283, 0x83 },
758		{ 0x00C284, 0x84 },
759		{ 0x00C285, 0x85 },
760		{ 0x00C286, 0x86 },
761		{ 0x00C287, 0x87 },
762		{ 0x00C288, 0x88 },
763		{ 0x00C289, 0x89 },
764		{ 0x00C28A, 0x8A },
765		{ 0x00C28B, 0x8B },
766		{ 0x00C28C, 0x8C },
767		{ 0x00C28D, 0x8D },
768		{ 0x00C28E, 0x8E },
769		{ 0x00C28F, 0x8F },
770		{ 0x00C290, 0x90 },
771		{ 0x00C291, 0x91 },
772		{ 0x00C292, 0x92 },
773		{ 0x00C293, 0x93 },
774		{ 0x00C294, 0x94 },
775		{ 0x00C295, 0x95 },
776		{ 0x00C296, 0x96 },
777		{ 0x00C297, 0x97 },
778		{ 0x00C298, 0x98 },
779		{ 0x00C299, 0x99 },
780		{ 0x00C29A, 0x9A },
781		{ 0x00C29B, 0x9B },
782		{ 0x00C29C, 0x9C },
783		{ 0x00C29D, 0x9D },
784		{ 0x00C29E, 0x9E },
785		{ 0x00C29F, 0x9F },
786		{ 0x00C2A0, 0xA0 },
787		{ 0x00C2A1, 0xA1 },
788		{ 0x00C2A2, 0xA2 },
789		{ 0x00C2A3, 0xA3 },
790		{ 0x00C2A4, 0xA4 },
791		{ 0x00C2A5, 0xA5 },
792		{ 0x00C2A6, 0xA6 },
793		{ 0x00C2A7, 0xA7 },
794		{ 0x00C2A8, 0xA8 },
795		{ 0x00C2A9, 0xA9 },
796		{ 0x00C2AA, 0xAA },
797		{ 0x00C2AB, 0xAB },
798		{ 0x00C2AC, 0xAC },
799		{ 0x00C2AD, 0xAD },
800		{ 0x00C2AE, 0xAE },
801		{ 0x00C2AF, 0xAF },
802		{ 0x00C2B0, 0xB0 },
803		{ 0x00C2B1, 0xB1 },
804		{ 0x00C2B2, 0xB2 },
805		{ 0x00C2B3, 0xB3 },
806		{ 0x00C2B4, 0xB4 },
807		{ 0x00C2B5, 0xB5 },
808		{ 0x00C2B6, 0xB6 },
809		{ 0x00C2B7, 0xB7 },
810		{ 0x00C2B8, 0xB8 },
811		{ 0x00C2B9, 0xB9 },
812		{ 0x00C2BA, 0xBA },
813		{ 0x00C2BB, 0xBB },
814		{ 0x00C2BC, 0xBC },
815		{ 0x00C2BD, 0xBD },
816		{ 0x00C2BE, 0xBE },
817		{ 0x00C2BF, 0xBF },
818		{ 0x00C380, 0xC0 },
819		{ 0x00C381, 0xC1 },
820		{ 0x00C382, 0xC2 },
821		{ 0x00C383, 0xC3 },
822		{ 0x00C384, 0xC4 },
823		{ 0x00C385, 0xC5 },
824		{ 0x00C386, 0xC6 },
825		{ 0x00C387, 0xC7 },
826		{ 0x00C388, 0xC8 },
827		{ 0x00C389, 0xC9 },
828		{ 0x00C38A, 0xCA },
829		{ 0x00C38B, 0xCB },
830		{ 0x00C38C, 0xCC },
831		{ 0x00C38D, 0xCD },
832		{ 0x00C38E, 0xCE },
833		{ 0x00C38F, 0xCF },
834		{ 0x00C390, 0xD0 },
835		{ 0x00C391, 0xD1 },
836		{ 0x00C392, 0xD2 },
837		{ 0x00C393, 0xD3 },
838		{ 0x00C394, 0xD4 },
839		{ 0x00C395, 0xD5 },
840		{ 0x00C396, 0xD6 },
841		{ 0x00C397, 0xD7 },
842		{ 0x00C398, 0xD8 },
843		{ 0x00C399, 0xD9 },
844		{ 0x00C39A, 0xDA },
845		{ 0x00C39B, 0xDB },
846		{ 0x00C39C, 0xDC },
847		{ 0x00C39D, 0xDD },
848		{ 0x00C39E, 0xDE },
849		{ 0x00C39F, 0xDF },
850		{ 0x00C3A0, 0xE0 },
851		{ 0x00C3A1, 0xE1 },
852		{ 0x00C3A2, 0xE2 },
853		{ 0x00C3A3, 0xE3 },
854		{ 0x00C3A4, 0xE4 },
855		{ 0x00C3A5, 0xE5 },
856		{ 0x00C3A6, 0xE6 },
857		{ 0x00C3A7, 0xE7 },
858		{ 0x00C3A8, 0xE8 },
859		{ 0x00C3A9, 0xE9 },
860		{ 0x00C3AA, 0xEA },
861		{ 0x00C3AB, 0xEB },
862		{ 0x00C3AC, 0xEC },
863		{ 0x00C3AD, 0xED },
864		{ 0x00C3AE, 0xEE },
865		{ 0x00C3AF, 0xEF },
866		{ 0x00C3B0, 0xF0 },
867		{ 0x00C3B1, 0xF1 },
868		{ 0x00C3B2, 0xF2 },
869		{ 0x00C3B3, 0xF3 },
870		{ 0x00C3B4, 0xF4 },
871		{ 0x00C3B5, 0xF5 },
872		{ 0x00C3B6, 0xF6 },
873		{ 0x00C3B7, 0xF7 },
874		{ 0x00C3B8, 0xF8 },
875		{ 0x00C3B9, 0xF9 },
876		{ 0x00C3BA, 0xFA },
877		{ 0x00C3BB, 0xFB },
878		{ 0x00C3BC, 0xFC },
879		{ 0x00C3BD, 0xFD },
880		{ 0x00C3BE, 0xFE },
881		{ 0x00C3BF, 0xFF },
882	},
883	{	/* UTF-8 -> ISO 8859-15 */
884		{ 0x00C280, 0x80 },
885		{ 0x00C281, 0x81 },
886		{ 0x00C282, 0x82 },
887		{ 0x00C283, 0x83 },
888		{ 0x00C284, 0x84 },
889		{ 0x00C285, 0x85 },
890		{ 0x00C286, 0x86 },
891		{ 0x00C287, 0x87 },
892		{ 0x00C288, 0x88 },
893		{ 0x00C289, 0x89 },
894		{ 0x00C28A, 0x8A },
895		{ 0x00C28B, 0x8B },
896		{ 0x00C28C, 0x8C },
897		{ 0x00C28D, 0x8D },
898		{ 0x00C28E, 0x8E },
899		{ 0x00C28F, 0x8F },
900		{ 0x00C290, 0x90 },
901		{ 0x00C291, 0x91 },
902		{ 0x00C292, 0x92 },
903		{ 0x00C293, 0x93 },
904		{ 0x00C294, 0x94 },
905		{ 0x00C295, 0x95 },
906		{ 0x00C296, 0x96 },
907		{ 0x00C297, 0x97 },
908		{ 0x00C298, 0x98 },
909		{ 0x00C299, 0x99 },
910		{ 0x00C29A, 0x9A },
911		{ 0x00C29B, 0x9B },
912		{ 0x00C29C, 0x9C },
913		{ 0x00C29D, 0x9D },
914		{ 0x00C29E, 0x9E },
915		{ 0x00C29F, 0x9F },
916		{ 0x00C2A0, 0xA0 },
917		{ 0x00C2A1, 0xA1 },
918		{ 0x00C2A2, 0xA2 },
919		{ 0x00C2A3, 0xA3 },
920		{ 0x00C2A5, 0xA5 },
921		{ 0x00C2A7, 0xA7 },
922		{ 0x00C2A9, 0xA9 },
923		{ 0x00C2AA, 0xAA },
924		{ 0x00C2AB, 0xAB },
925		{ 0x00C2AC, 0xAC },
926		{ 0x00C2AD, 0xAD },
927		{ 0x00C2AE, 0xAE },
928		{ 0x00C2AF, 0xAF },
929		{ 0x00C2B0, 0xB0 },
930		{ 0x00C2B1, 0xB1 },
931		{ 0x00C2B2, 0xB2 },
932		{ 0x00C2B3, 0xB3 },
933		{ 0x00C2B5, 0xB5 },
934		{ 0x00C2B6, 0xB6 },
935		{ 0x00C2B7, 0xB7 },
936		{ 0x00C2B9, 0xB9 },
937		{ 0x00C2BA, 0xBA },
938		{ 0x00C2BB, 0xBB },
939		{ 0x00C2BF, 0xBF },
940		{ 0x00C380, 0xC0 },
941		{ 0x00C381, 0xC1 },
942		{ 0x00C382, 0xC2 },
943		{ 0x00C383, 0xC3 },
944		{ 0x00C384, 0xC4 },
945		{ 0x00C385, 0xC5 },
946		{ 0x00C386, 0xC6 },
947		{ 0x00C387, 0xC7 },
948		{ 0x00C388, 0xC8 },
949		{ 0x00C389, 0xC9 },
950		{ 0x00C38A, 0xCA },
951		{ 0x00C38B, 0xCB },
952		{ 0x00C38C, 0xCC },
953		{ 0x00C38D, 0xCD },
954		{ 0x00C38E, 0xCE },
955		{ 0x00C38F, 0xCF },
956		{ 0x00C390, 0xD0 },
957		{ 0x00C391, 0xD1 },
958		{ 0x00C392, 0xD2 },
959		{ 0x00C393, 0xD3 },
960		{ 0x00C394, 0xD4 },
961		{ 0x00C395, 0xD5 },
962		{ 0x00C396, 0xD6 },
963		{ 0x00C397, 0xD7 },
964		{ 0x00C398, 0xD8 },
965		{ 0x00C399, 0xD9 },
966		{ 0x00C39A, 0xDA },
967		{ 0x00C39B, 0xDB },
968		{ 0x00C39C, 0xDC },
969		{ 0x00C39D, 0xDD },
970		{ 0x00C39E, 0xDE },
971		{ 0x00C39F, 0xDF },
972		{ 0x00C3A0, 0xE0 },
973		{ 0x00C3A1, 0xE1 },
974		{ 0x00C3A2, 0xE2 },
975		{ 0x00C3A3, 0xE3 },
976		{ 0x00C3A4, 0xE4 },
977		{ 0x00C3A5, 0xE5 },
978		{ 0x00C3A6, 0xE6 },
979		{ 0x00C3A7, 0xE7 },
980		{ 0x00C3A8, 0xE8 },
981		{ 0x00C3A9, 0xE9 },
982		{ 0x00C3AA, 0xEA },
983		{ 0x00C3AB, 0xEB },
984		{ 0x00C3AC, 0xEC },
985		{ 0x00C3AD, 0xED },
986		{ 0x00C3AE, 0xEE },
987		{ 0x00C3AF, 0xEF },
988		{ 0x00C3B0, 0xF0 },
989		{ 0x00C3B1, 0xF1 },
990		{ 0x00C3B2, 0xF2 },
991		{ 0x00C3B3, 0xF3 },
992		{ 0x00C3B4, 0xF4 },
993		{ 0x00C3B5, 0xF5 },
994		{ 0x00C3B6, 0xF6 },
995		{ 0x00C3B7, 0xF7 },
996		{ 0x00C3B8, 0xF8 },
997		{ 0x00C3B9, 0xF9 },
998		{ 0x00C3BA, 0xFA },
999		{ 0x00C3BB, 0xFB },
1000		{ 0x00C3BC, 0xFC },
1001		{ 0x00C3BD, 0xFD },
1002		{ 0x00C3BE, 0xFE },
1003		{ 0x00C3BF, 0xFF },
1004		{ 0x00C592, 0xBC },
1005		{ 0x00C593, 0xBD },
1006		{ 0x00C5A0, 0xA6 },
1007		{ 0x00C5A1, 0xA8 },
1008		{ 0x00C5B8, 0xBE },
1009		{ 0x00C5BD, 0xB4 },
1010		{ 0x00C5BE, 0xB8 },
1011		{ 0xE282AC, 0xA4 },
1012	},
1013	{	/* UTF-8 -> CP850 */
1014		{ 0x00C2A0, 0xFF },
1015		{ 0x00C2A1, 0xAD },
1016		{ 0x00C2A2, 0xBD },
1017		{ 0x00C2A3, 0x9C },
1018		{ 0x00C2A4, 0xCF },
1019		{ 0x00C2A5, 0xBE },
1020		{ 0x00C2A6, 0xDD },
1021		{ 0x00C2A7, 0xF5 },
1022		{ 0x00C2A8, 0xF9 },
1023		{ 0x00C2A9, 0xB8 },
1024		{ 0x00C2AA, 0xA6 },
1025		{ 0x00C2AB, 0xAE },
1026		{ 0x00C2AC, 0xAA },
1027		{ 0x00C2AD, 0xF0 },
1028		{ 0x00C2AE, 0xA9 },
1029		{ 0x00C2AF, 0xEE },
1030		{ 0x00C2B0, 0xF8 },
1031		{ 0x00C2B1, 0xF1 },
1032		{ 0x00C2B2, 0xFD },
1033		{ 0x00C2B3, 0xFC },
1034		{ 0x00C2B4, 0xEF },
1035		{ 0x00C2B5, 0xE6 },
1036		{ 0x00C2B6, 0xF4 },
1037		{ 0x00C2B7, 0xFA },
1038		{ 0x00C2B8, 0xF7 },
1039		{ 0x00C2B9, 0xFB },
1040		{ 0x00C2BA, 0xA7 },
1041		{ 0x00C2BB, 0xAF },
1042		{ 0x00C2BC, 0xAC },
1043		{ 0x00C2BD, 0xAB },
1044		{ 0x00C2BE, 0xF3 },
1045		{ 0x00C2BF, 0xA8 },
1046		{ 0x00C380, 0xB7 },
1047		{ 0x00C381, 0xB5 },
1048		{ 0x00C382, 0xB6 },
1049		{ 0x00C383, 0xC7 },
1050		{ 0x00C384, 0x8E },
1051		{ 0x00C385, 0x8F },
1052		{ 0x00C386, 0x92 },
1053		{ 0x00C387, 0x80 },
1054		{ 0x00C388, 0xD4 },
1055		{ 0x00C389, 0x90 },
1056		{ 0x00C38A, 0xD2 },
1057		{ 0x00C38B, 0xD3 },
1058		{ 0x00C38C, 0xDE },
1059		{ 0x00C38D, 0xD6 },
1060		{ 0x00C38E, 0xD7 },
1061		{ 0x00C38F, 0xD8 },
1062		{ 0x00C390, 0xD1 },
1063		{ 0x00C391, 0xA5 },
1064		{ 0x00C392, 0xE3 },
1065		{ 0x00C393, 0xE0 },
1066		{ 0x00C394, 0xE2 },
1067		{ 0x00C395, 0xE5 },
1068		{ 0x00C396, 0x99 },
1069		{ 0x00C397, 0x9E },
1070		{ 0x00C398, 0x9D },
1071		{ 0x00C399, 0xEB },
1072		{ 0x00C39A, 0xE9 },
1073		{ 0x00C39B, 0xEA },
1074		{ 0x00C39C, 0x9A },
1075		{ 0x00C39D, 0xED },
1076		{ 0x00C39E, 0xE8 },
1077		{ 0x00C39F, 0xE1 },
1078		{ 0x00C3A0, 0x85 },
1079		{ 0x00C3A1, 0xA0 },
1080		{ 0x00C3A2, 0x83 },
1081		{ 0x00C3A3, 0xC6 },
1082		{ 0x00C3A4, 0x84 },
1083		{ 0x00C3A5, 0x86 },
1084		{ 0x00C3A6, 0x91 },
1085		{ 0x00C3A7, 0x87 },
1086		{ 0x00C3A8, 0x8A },
1087		{ 0x00C3A9, 0x82 },
1088		{ 0x00C3AA, 0x88 },
1089		{ 0x00C3AB, 0x89 },
1090		{ 0x00C3AC, 0x8D },
1091		{ 0x00C3AD, 0xA1 },
1092		{ 0x00C3AE, 0x8C },
1093		{ 0x00C3AF, 0x8B },
1094		{ 0x00C3B0, 0xD0 },
1095		{ 0x00C3B1, 0xA4 },
1096		{ 0x00C3B2, 0x95 },
1097		{ 0x00C3B3, 0xA2 },
1098		{ 0x00C3B4, 0x93 },
1099		{ 0x00C3B5, 0xE4 },
1100		{ 0x00C3B6, 0x94 },
1101		{ 0x00C3B7, 0xF6 },
1102		{ 0x00C3B8, 0x9B },
1103		{ 0x00C3B9, 0x97 },
1104		{ 0x00C3BA, 0xA3 },
1105		{ 0x00C3BB, 0x96 },
1106		{ 0x00C3BC, 0x81 },
1107		{ 0x00C3BD, 0xEC },
1108		{ 0x00C3BE, 0xE7 },
1109		{ 0x00C3BF, 0x98 },
1110		{ 0x00C4B1, 0xD5 },
1111		{ 0x00C692, 0x9F },
1112		{ 0xE28097, 0xF2 },
1113		{ 0xE29480, 0xC4 },
1114		{ 0xE29482, 0xB3 },
1115		{ 0xE2948C, 0xDA },
1116		{ 0xE29490, 0xBF },
1117		{ 0xE29494, 0xC0 },
1118		{ 0xE29498, 0xD9 },
1119		{ 0xE2949C, 0xC3 },
1120		{ 0xE294A4, 0xB4 },
1121		{ 0xE294AC, 0xC2 },
1122		{ 0xE294B4, 0xC1 },
1123		{ 0xE294BC, 0xC5 },
1124		{ 0xE29590, 0xCD },
1125		{ 0xE29591, 0xBA },
1126		{ 0xE29594, 0xC9 },
1127		{ 0xE29597, 0xBB },
1128		{ 0xE2959A, 0xC8 },
1129		{ 0xE2959D, 0xBC },
1130		{ 0xE295A0, 0xCC },
1131		{ 0xE295A3, 0xB9 },
1132		{ 0xE295A6, 0xCB },
1133		{ 0xE295A9, 0xCA },
1134		{ 0xE295AC, 0xCE },
1135		{ 0xE29680, 0xDF },
1136		{ 0xE29684, 0xDC },
1137		{ 0xE29688, 0xDB },
1138		{ 0xE29691, 0xB0 },
1139		{ 0xE29692, 0xB1 },
1140		{ 0xE29693, 0xB2 },
1141		{ 0xE296A0, 0xFE },
1142	}
1143};
1144
1145#endif	/* _KERNEL */
1146
1147#ifdef __cplusplus
1148}
1149#endif
1150
1151#endif /* _SYS_KICONV_LATIN1_H */
1152