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 */