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