xref: /illumos-gate/usr/src/uts/common/sys/kiconv_latin1.h (revision a629ded1d7b2e67c2028ccbc5ba9099328cc4e1b)
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
74 extern "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  */
92 static 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  */
622 static 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