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 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 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 2006 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-2005 Unicode, Inc. All rights reserved. Distributed 29 * under the Terms of Use in http://www.unicode.org/copyright.html. 30 * 31 * This file has been modified by Sun Microsystems, Inc. 32 * 33 */ 34 35#include <sys/errno.h> 36utf8%system { 37 direction { 38 @condition { 39 inputsize >= 1; 40 @between 0X0...0X7F; 41 } @map { 42 0x00 0x00 // U+0000 43 0x01 0x01 // U+0001 44 0x02 0x02 // U+0002 45 0x03 0x03 // U+0003 46 0x04 0x04 // U+0004 47 0x05 0x05 // U+0005 48 0x06 0x06 // U+0006 49 0x07 0x07 // U+0007 50 0x08 0x08 // U+0008 51 0x09 0x09 // U+0009 52 0x0A 0x0A // U+000a 53 0x0B 0x0B // U+000b 54 0x0C 0x0C // U+000c 55 0x0D 0x0D // U+000d 56 0x0E 0x0E // U+000e 57 0x0F 0x0F // U+000f 58 0x10 0x10 // U+0010 59 0x11 0x11 // U+0011 60 0x12 0x12 // U+0012 61 0x13 0x13 // U+0013 62 0x14 0x14 // U+0014 63 0x15 0x15 // U+0015 64 0x16 0x16 // U+0016 65 0x17 0x17 // U+0017 66 0x18 0x18 // U+0018 67 0x19 0x19 // U+0019 68 0x1A 0x7F // U+001a 69 0x1B 0x1B // U+001b 70 0x1C 0x1A // U+001c 71 0x1D 0x1D // U+001d 72 0x1E 0x1E // U+001e 73 0x1F 0x1F // U+001f 74 0x20 0x20 // U+0020 75 0x21 0x21 // U+0021 76 0x22 0x22 // U+0022 77 0x23 0x23 // U+0023 78 0x24 0x24 // U+0024 79 0x26 0x26 // U+0026 80 0x27 0x27 // U+0027 81 0x28 0x28 // U+0028 82 0x29 0x29 // U+0029 83 0x2A 0x2A // U+002a 84 0x2B 0x2B // U+002b 85 0x2C 0x2C // U+002c 86 0x2D 0x2D // U+002d 87 0x2E 0x2E // U+002e 88 0x2F 0x2F // U+002f 89 0x30 0x30 // U+0030 90 0x31 0x31 // U+0031 91 0x32 0x32 // U+0032 92 0x33 0x33 // U+0033 93 0x34 0x34 // U+0034 94 0x35 0x35 // U+0035 95 0x36 0x36 // U+0036 96 0x37 0x37 // U+0037 97 0x38 0x38 // U+0038 98 0x39 0x39 // U+0039 99 0x3A 0x3A // U+003a 100 0x3B 0x3B // U+003b 101 0x3C 0x3C // U+003c 102 0x3D 0x3D // U+003d 103 0x3E 0x3E // U+003e 104 0x3F 0x3F // U+003f 105 0x40 0x40 // U+0040 106 0x41 0x41 // U+0041 107 0x42 0x42 // U+0042 108 0x43 0x43 // U+0043 109 0x44 0x44 // U+0044 110 0x45 0x45 // U+0045 111 0x46 0x46 // U+0046 112 0x47 0x47 // U+0047 113 0x48 0x48 // U+0048 114 0x49 0x49 // U+0049 115 0x4A 0x4A // U+004a 116 0x4B 0x4B // U+004b 117 0x4C 0x4C // U+004c 118 0x4D 0x4D // U+004d 119 0x4E 0x4E // U+004e 120 0x4F 0x4F // U+004f 121 0x50 0x50 // U+0050 122 0x51 0x51 // U+0051 123 0x52 0x52 // U+0052 124 0x53 0x53 // U+0053 125 0x54 0x54 // U+0054 126 0x55 0x55 // U+0055 127 0x56 0x56 // U+0056 128 0x57 0x57 // U+0057 129 0x58 0x58 // U+0058 130 0x59 0x59 // U+0059 131 0x5A 0x5A // U+005a 132 0x5B 0x5B // U+005b 133 0x5C 0x5C // U+005c 134 0x5D 0x5D // U+005d 135 0x5E 0x5E // U+005e 136 0x5F 0x5F // U+005f 137 0x60 0x60 // U+0060 138 0x61 0x61 // U+0061 139 0x62 0x62 // U+0062 140 0x63 0x63 // U+0063 141 0x64 0x64 // U+0064 142 0x65 0x65 // U+0065 143 0x66 0x66 // U+0066 144 0x67 0x67 // U+0067 145 0x68 0x68 // U+0068 146 0x69 0x69 // U+0069 147 0x6A 0x6A // U+006a 148 0x6B 0x6B // U+006b 149 0x6C 0x6C // U+006c 150 0x6D 0x6D // U+006d 151 0x6E 0x6E // U+006e 152 0x6F 0x6F // U+006f 153 0x70 0x70 // U+0070 154 0x71 0x71 // U+0071 155 0x72 0x72 // U+0072 156 0x73 0x73 // U+0073 157 0x74 0x74 // U+0074 158 0x75 0x75 // U+0075 159 0x76 0x76 // U+0076 160 0x77 0x77 // U+0077 161 0x78 0x78 // U+0078 162 0x79 0x79 // U+0079 163 0x7A 0x7A // U+007a 164 0x7B 0x7B // U+007b 165 0x7C 0x7C // U+007c 166 0x7D 0x7D // U+007d 167 0x7E 0x7E // U+007e 168 0x7F 0x1C // U+007f 169 default 0x3f 170 }; 171 @condition { 172 inputsize <= 1; 173 @between 0XC0...0XFD; 174 } @operation { 175 error EINVAL; 176 }; 177 @condition { 178 inputsize >= 2; 179 @between 0XC080...0XDFBF; 180 } @map { 181 0xC2A0 0xA0 // U+00a0 182 0xC2A2 0xC0 // U+00a2 183 0xC2A3 0xA3 // U+00a3 184 0xC2A4 0xA4 // U+00a4 185 0xC2A6 0xDB // U+00a6 186 0xC2AB 0x97 // U+00ab 187 0xC2AC 0xDC // U+00ac 188 0xC2AD 0xA1 // U+00ad 189 0xC2B0 0x80 // U+00b0 190 0xC2B1 0x93 // U+00b1 191 0xC2B7 0x81 // U+00b7 192 0xC2BB 0x98 // U+00bb 193 0xC2BC 0x95 // U+00bc 194 0xC2BD 0x94 // U+00bd 195 0xC397 0xDE // U+00d7 196 0xC3B7 0xDD // U+00f7 197 0xCEB2 0x90 // U+03b2 198 0xCF86 0x92 // U+03c6 199 0xD88C 0xAC // U+060c 200 0xD89B 0xBB // U+061b 201 0xD89F 0xBF // U+061f 202 0xD980 0xE0 // U+0640 203 0xD9A0 0xB0 // U+0660 204 0xD9A1 0xB1 // U+0661 205 0xD9A2 0xB2 // U+0662 206 0xD9A3 0xB3 // U+0663 207 0xD9A4 0xB4 // U+0664 208 0xD9A5 0xB5 // U+0665 209 0xD9A6 0xB6 // U+0666 210 0xD9A7 0xB7 // U+0667 211 0xD9A8 0xB8 // U+0668 212 0xD9A9 0xB9 // U+0669 213 0xD9AA 0x25 // U+066a 214 default 0x3f 215 }; 216 @condition { 217 inputsize <= 2; 218 @between 0XE0...0XFD; 219 } @operation { 220 error EINVAL; 221 }; 222 @condition { 223 inputsize >= 3; 224 @between 0XE08080...0XECBFBF, 0XED8080...0XED9FBF, 0XEE8080...0XEFBFBF; 225 } @map { 226 0xE2808C 0x9F // U+200c 227 0xE28899 0x82 // U+2219 228 0xE2889A 0x83 // U+221a 229 0xE2889E 0x91 // U+221e 230 0xE28988 0x96 // U+2248 231 0xE29480 0x85 // U+2500 232 0xE29482 0x86 // U+2502 233 0xE2948C 0x8D // U+250c 234 0xE29490 0x8C // U+2510 235 0xE29494 0x8E // U+2514 236 0xE29498 0x8F // U+2518 237 0xE2949C 0x8A // U+251c 238 0xE294A4 0x88 // U+2524 239 0xE294AC 0x89 // U+252c 240 0xE294B4 0x8B // U+2534 241 0xE294BC 0x87 // U+253c 242 0xE29692 0x84 // U+2592 243 0xE296A0 0xFE // U+25a0 244 0xEFB9BC 0xF1 // U+fe7c 245 0xEFB9BD 0xF0 // U+fe7d 246 0xEFBA80 0xC1 // U+fe80 247 0xEFBA81 0xC2 // U+fe81 248 0xEFBA82 0xA2 // U+fe82 249 0xEFBA83 0xC3 // U+fe83 250 0xEFBA84 0xA5 // U+fe84 251 0xEFBA85 0xC4 // U+fe85 252 0xEFBA8B 0xC6 // U+fe8b 253 0xEFBA8D 0xC7 // U+fe8d 254 0xEFBA8E 0xA8 // U+fe8e 255 0xEFBA8F 0xA9 // U+fe8f 256 0xEFBA91 0xC8 // U+fe91 257 0xEFBA93 0xC9 // U+fe93 258 0xEFBA95 0xAA // U+fe95 259 0xEFBA97 0xCA // U+fe97 260 0xEFBA99 0xAB // U+fe99 261 0xEFBA9B 0xCB // U+fe9b 262 0xEFBA9D 0xAD // U+fe9d 263 0xEFBA9F 0xCC // U+fe9f 264 0xEFBAA1 0xAE // U+fea1 265 0xEFBAA3 0xCD // U+fea3 266 0xEFBAA5 0xAF // U+fea5 267 0xEFBAA7 0xCE // U+fea7 268 0xEFBAA9 0xCF // U+fea9 269 0xEFBAAB 0xD0 // U+feab 270 0xEFBAAD 0xD1 // U+fead 271 0xEFBAAF 0xD2 // U+feaf 272 0xEFBAB1 0xBC // U+feb1 273 0xEFBAB3 0xD3 // U+feb3 274 0xEFBAB5 0xBD // U+feb5 275 0xEFBAB7 0xD4 // U+feb7 276 0xEFBAB9 0xBE // U+feb9 277 0xEFBABB 0xD5 // U+febb 278 0xEFBABD 0xEB // U+febd 279 0xEFBABF 0xD6 // U+febf 280 0xEFBB83 0xD7 // U+fec3 281 0xEFBB87 0xD8 // U+fec7 282 0xEFBB89 0xDF // U+fec9 283 0xEFBB8A 0xC5 // U+feca 284 0xEFBB8B 0xD9 // U+fecb 285 0xEFBB8C 0xEC // U+fecc 286 0xEFBB8D 0xEE // U+fecd 287 0xEFBB8E 0xED // U+fece 288 0xEFBB8F 0xDA // U+fecf 289 0xEFBB90 0xF7 // U+fed0 290 0xEFBB91 0xBA // U+fed1 291 0xEFBB93 0xE1 // U+fed3 292 0xEFBB95 0xF8 // U+fed5 293 0xEFBB97 0xE2 // U+fed7 294 0xEFBB99 0xFC // U+fed9 295 0xEFBB9B 0xE3 // U+fedb 296 0xEFBB9D 0xFB // U+fedd 297 0xEFBB9F 0xE4 // U+fedf 298 0xEFBBA1 0xEF // U+fee1 299 0xEFBBA3 0xE5 // U+fee3 300 0xEFBBA5 0xF2 // U+fee5 301 0xEFBBA7 0xE6 // U+fee7 302 0xEFBBA9 0xF3 // U+fee9 303 0xEFBBAB 0xE7 // U+feeb 304 0xEFBBAC 0xF4 // U+feec 305 0xEFBBAD 0xE8 // U+feed 306 0xEFBBAF 0xE9 // U+feef 307 0xEFBBB0 0xF5 // U+fef0 308 0xEFBBB1 0xFD // U+fef1 309 0xEFBBB2 0xF6 // U+fef2 310 0xEFBBB3 0xEA // U+fef3 311 0xEFBBB5 0xF9 // U+fef5 312 0xEFBBB6 0xFA // U+fef6 313 0xEFBBB7 0x99 // U+fef7 314 0xEFBBB8 0x9A // U+fef8 315 0xEFBBBB 0x9D // U+fefb 316 0xEFBBBC 0x9E // U+fefc 317 0xefbfbe error 318 0xefbfbf error 319 default 0x3f 320 }; // for last @map syntax 321 @condition { 322 inputsize <= 3; 323 @between 0XF0...0XFD; 324 } @operation { 325 error EINVAL; 326 }; 327 @condition { 328 inputsize >= 4; 329 @between 0XF0808080...0XF7BFBFBF; 330 } @operation { 331 output = 0x3f; 332 discard 4; 333 }; 334 @condition { 335 inputsize <= 4; 336 @between 0XF8...0XFD; 337 } @operation { 338 error EINVAL; 339 }; 340 @condition { 341 inputsize >= 5; 342 @between 0XF880808080...0XFBBFBFBFBF; 343 } @operation { 344 output = 0x3f; 345 discard 5; 346 }; 347 @condition { 348 inputsize <= 5; 349 @between 0XFC...0XFD; 350 } @operation { 351 error EINVAL; 352 }; 353 @condition { 354 inputsize >= 6; 355 @between 0XFC8080808080...0XFDBFBFBFBFBF; 356 } @operation { 357 output = 0x3f; 358 discard 6; 359 }; 360 }; // for direction 361} // for conversion name 362