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 0x1A // U+001a 69 0x1B 0x1B // U+001b 70 0x1C 0x1C // 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 0x25 0x25 // U+0025 80 0x26 0x26 // U+0026 81 0x27 0x27 // U+0027 82 0x28 0x28 // U+0028 83 0x29 0x29 // U+0029 84 0x2A 0x2A // U+002a 85 0x2B 0x2B // U+002b 86 0x2C 0x2C // U+002c 87 0x2D 0x2D // U+002d 88 0x2E 0x2E // U+002e 89 0x2F 0x2F // U+002f 90 0x30 0x30 // U+0030 91 0x31 0x31 // U+0031 92 0x32 0x32 // U+0032 93 0x33 0x33 // U+0033 94 0x34 0x34 // U+0034 95 0x35 0x35 // U+0035 96 0x36 0x36 // U+0036 97 0x37 0x37 // U+0037 98 0x38 0x38 // U+0038 99 0x39 0x39 // U+0039 100 0x3A 0x3A // U+003a 101 0x3B 0x3B // U+003b 102 0x3C 0x3C // U+003c 103 0x3D 0x3D // U+003d 104 0x3E 0x3E // U+003e 105 0x3F 0x3F // U+003f 106 0x40 0x40 // U+0040 107 0x41 0x41 // U+0041 108 0x42 0x42 // U+0042 109 0x43 0x43 // U+0043 110 0x44 0x44 // U+0044 111 0x45 0x45 // U+0045 112 0x46 0x46 // U+0046 113 0x47 0x47 // U+0047 114 0x48 0x48 // U+0048 115 0x49 0x49 // U+0049 116 0x4A 0x4A // U+004a 117 0x4B 0x4B // U+004b 118 0x4C 0x4C // U+004c 119 0x4D 0x4D // U+004d 120 0x4E 0x4E // U+004e 121 0x4F 0x4F // U+004f 122 0x50 0x50 // U+0050 123 0x51 0x51 // U+0051 124 0x52 0x52 // U+0052 125 0x53 0x53 // U+0053 126 0x54 0x54 // U+0054 127 0x55 0x55 // U+0055 128 0x56 0x56 // U+0056 129 0x57 0x57 // U+0057 130 0x58 0x58 // U+0058 131 0x59 0x59 // U+0059 132 0x5A 0x5A // U+005a 133 0x5B 0x5B // U+005b 134 0x5C 0x5C // U+005c 135 0x5D 0x5D // U+005d 136 0x5E 0x5E // U+005e 137 0x5F 0x5F // U+005f 138 0x60 0x60 // U+0060 139 0x61 0x61 // U+0061 140 0x62 0x62 // U+0062 141 0x63 0x63 // U+0063 142 0x64 0x64 // U+0064 143 0x65 0x65 // U+0065 144 0x66 0x66 // U+0066 145 0x67 0x67 // U+0067 146 0x68 0x68 // U+0068 147 0x69 0x69 // U+0069 148 0x6A 0x6A // U+006a 149 0x6B 0x6B // U+006b 150 0x6C 0x6C // U+006c 151 0x6D 0x6D // U+006d 152 0x6E 0x6E // U+006e 153 0x6F 0x6F // U+006f 154 0x70 0x70 // U+0070 155 0x71 0x71 // U+0071 156 0x72 0x72 // U+0072 157 0x73 0x73 // U+0073 158 0x74 0x74 // U+0074 159 0x75 0x75 // U+0075 160 0x76 0x76 // U+0076 161 0x77 0x77 // U+0077 162 0x78 0x78 // U+0078 163 0x79 0x79 // U+0079 164 0x7A 0x7A // U+007a 165 0x7B 0x7B // U+007b 166 0x7C 0x7C // U+007c 167 0x7D 0x7D // U+007d 168 0x7E 0x7E // U+007e 169 0x7F 0x7F // U+007f 170 default 0x3f 171 }; 172 @condition { 173 inputsize <= 1; 174 @between 0XC0...0XFD; 175 } @operation { 176 error EINVAL; 177 }; 178 @condition { 179 inputsize >= 2; 180 @between 0XC080...0XDFBF; 181 } @map { 182 0xC2A0 0xA0 // U+00a0 183 0xC2A2 0xA2 // U+00a2 184 0xC2A3 0xA3 // U+00a3 185 0xC2A4 0xA4 // U+00a4 186 0xC2A5 0xA5 // U+00a5 187 0xC2A6 0xA6 // U+00a6 188 0xC2A7 0xA7 // U+00a7 189 0xC2A8 0xA8 // U+00a8 190 0xC2A9 0xA9 // U+00a9 191 0xC2AB 0xAB // U+00ab 192 0xC2AC 0xAC // U+00ac 193 0xC2AD 0xAD // U+00ad 194 0xC2AE 0xAE // U+00ae 195 0xC2AF 0xAF // U+00af 196 0xC2B0 0xB0 // U+00b0 197 0xC2B1 0xB1 // U+00b1 198 0xC2B2 0xB2 // U+00b2 199 0xC2B3 0xB3 // U+00b3 200 0xC2B4 0xB4 // U+00b4 201 0xC2B5 0xB5 // U+00b5 202 0xC2B6 0xB6 // U+00b6 203 0xC2B7 0xB7 // U+00b7 204 0xC2B8 0xB8 // U+00b8 205 0xC2B9 0xB9 // U+00b9 206 0xC2BB 0xBB // U+00bb 207 0xC2BC 0xBC // U+00bc 208 0xC2BD 0xBD // U+00bd 209 0xC2BE 0xBE // U+00be 210 0xC397 0xD7 // U+00d7 211 0xC3A0 0xE0 // U+00e0 212 0xC3A2 0xE2 // U+00e2 213 0xC3A7 0xE7 // U+00e7 214 0xC3A8 0xE8 // U+00e8 215 0xC3A9 0xE9 // U+00e9 216 0xC3AA 0xEA // U+00ea 217 0xC3AB 0xEB // U+00eb 218 0xC3AE 0xEE // U+00ee 219 0xC3AF 0xEF // U+00ef 220 0xC3B4 0xF4 // U+00f4 221 0xC3B7 0xF7 // U+00f7 222 0xC3B9 0xF9 // U+00f9 223 0xC3BB 0xFB // U+00fb 224 0xC3BC 0xFC // U+00fc 225 0xC592 0x8C // U+0152 226 0xC593 0x9C // U+0153 227 0xC692 0x83 // U+0192 228 0xCB86 0x88 // U+02c6 229 0xD88C 0xA1 // U+060c 230 0xD89B 0xBA // U+061b 231 0xD89F 0xBF // U+061f 232 0xD8A1 0xC1 // U+0621 233 0xD8A2 0xC2 // U+0622 234 0xD8A3 0xC3 // U+0623 235 0xD8A4 0xC4 // U+0624 236 0xD8A5 0xC5 // U+0625 237 0xD8A6 0xC6 // U+0626 238 0xD8A7 0xC7 // U+0627 239 0xD8A8 0xC8 // U+0628 240 0xD8A9 0xC9 // U+0629 241 0xD8AA 0xCA // U+062a 242 0xD8AB 0xCB // U+062b 243 0xD8AC 0xCC // U+062c 244 0xD8AD 0xCD // U+062d 245 0xD8AE 0xCE // U+062e 246 0xD8AF 0xCF // U+062f 247 0xD8B0 0xD0 // U+0630 248 0xD8B1 0xD1 // U+0631 249 0xD8B2 0xD2 // U+0632 250 0xD8B3 0xD3 // U+0633 251 0xD8B4 0xD4 // U+0634 252 0xD8B5 0xD5 // U+0635 253 0xD8B6 0xD6 // U+0636 254 0xD8B7 0xD8 // U+0637 255 0xD8B8 0xD9 // U+0638 256 0xD8B9 0xDA // U+0639 257 0xD8BA 0xDB // U+063a 258 0xD980 0xDC // U+0640 259 0xD981 0xDD // U+0641 260 0xD982 0xDE // U+0642 261 0xD983 0xDF // U+0643 262 0xD984 0xE1 // U+0644 263 0xD985 0xE3 // U+0645 264 0xD986 0xE4 // U+0646 265 0xD987 0xE5 // U+0647 266 0xD988 0xE6 // U+0648 267 0xD989 0xEC // U+0649 268 0xD98A 0xED // U+064a 269 0xD98B 0xF0 // U+064b 270 0xD98C 0xF1 // U+064c 271 0xD98D 0xF2 // U+064d 272 0xD98E 0xF3 // U+064e 273 0xD98F 0xF5 // U+064f 274 0xD990 0xF6 // U+0650 275 0xD991 0xF8 // U+0651 276 0xD992 0xFA // U+0652 277 0xD9B9 0x8A // U+0679 278 0xD9BE 0x81 // U+067e 279 0xDA86 0x8D // U+0686 280 0xDA88 0x8F // U+0688 281 0xDA91 0x9A // U+0691 282 0xDA98 0x8E // U+0698 283 0xDAA9 0x98 // U+06a9 284 0xDAAF 0x90 // U+06af 285 0xDABA 0x9F // U+06ba 286 0xDABE 0xAA // U+06be 287 0xDB81 0xC0 // U+06c1 288 0xDB92 0xFF // U+06d2 289 default 0x3f 290 }; 291 @condition { 292 inputsize <= 2; 293 @between 0XE0...0XFD; 294 } @operation { 295 error EINVAL; 296 }; 297 @condition { 298 inputsize >= 3; 299 @between 0XE08080...0XECBFBF, 0XED8080...0XED9FBF, 0XEE8080...0XEFBFBF; 300 } @map { 301 0xE2808C 0x9D // U+200c 302 0xE2808D 0x9E // U+200d 303 0xE2808E 0xFD // U+200e 304 0xE2808F 0xFE // U+200f 305 0xE28093 0x96 // U+2013 306 0xE28094 0x97 // U+2014 307 0xE28098 0x91 // U+2018 308 0xE28099 0x92 // U+2019 309 0xE2809A 0x82 // U+201a 310 0xE2809C 0x93 // U+201c 311 0xE2809D 0x94 // U+201d 312 0xE2809E 0x84 // U+201e 313 0xE280A0 0x86 // U+2020 314 0xE280A1 0x87 // U+2021 315 0xE280A2 0x95 // U+2022 316 0xE280A6 0x85 // U+2026 317 0xE280B0 0x89 // U+2030 318 0xE280B9 0x8B // U+2039 319 0xE280BA 0x9B // U+203a 320 0xE282AC 0x80 // U+20ac 321 0xE284A2 0x99 // U+2122 322 0xefbfbe error 323 0xefbfbf error 324 default 0x3f 325 }; // for last @map syntax 326 @condition { 327 inputsize <= 3; 328 @between 0XF0...0XFD; 329 } @operation { 330 error EINVAL; 331 }; 332 @condition { 333 inputsize >= 4; 334 @between 0XF0808080...0XF7BFBFBF; 335 } @operation { 336 output = 0x3f; 337 discard 4; 338 }; 339 @condition { 340 inputsize <= 4; 341 @between 0XF8...0XFD; 342 } @operation { 343 error EINVAL; 344 }; 345 @condition { 346 inputsize >= 5; 347 @between 0XF880808080...0XFBBFBFBFBF; 348 } @operation { 349 output = 0x3f; 350 discard 5; 351 }; 352 @condition { 353 inputsize <= 5; 354 @between 0XFC...0XFD; 355 } @operation { 356 error EINVAL; 357 }; 358 @condition { 359 inputsize >= 6; 360 @between 0XFC8080808080...0XFDBFBFBFBFBF; 361 } @operation { 362 output = 0x3f; 363 discard 6; 364 }; 365 }; // for direction 366} // for conversion name 367