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