1 /* 1 /* 2 * linux/fs/nls/nls_cp863.c 2 * linux/fs/nls/nls_cp863.c 3 * 3 * 4 * Charset cp863 translation tables. 4 * Charset cp863 translation tables. 5 * Generated automatically from the Unicode an 5 * Generated automatically from the Unicode and charset 6 * tables from the Unicode Organization (www.u 6 * tables from the Unicode Organization (www.unicode.org). 7 * The Unicode to charset table has only exact 7 * The Unicode to charset table has only exact mappings. 8 */ 8 */ 9 9 10 #include <linux/module.h> 10 #include <linux/module.h> 11 #include <linux/kernel.h> 11 #include <linux/kernel.h> 12 #include <linux/string.h> 12 #include <linux/string.h> 13 #include <linux/nls.h> 13 #include <linux/nls.h> 14 #include <linux/errno.h> 14 #include <linux/errno.h> 15 15 16 static const wchar_t charset2uni[256] = { 16 static const wchar_t charset2uni[256] = { 17 /* 0x00*/ 17 /* 0x00*/ 18 0x0000, 0x0001, 0x0002, 0x0003, 18 0x0000, 0x0001, 0x0002, 0x0003, 19 0x0004, 0x0005, 0x0006, 0x0007, 19 0x0004, 0x0005, 0x0006, 0x0007, 20 0x0008, 0x0009, 0x000a, 0x000b, 20 0x0008, 0x0009, 0x000a, 0x000b, 21 0x000c, 0x000d, 0x000e, 0x000f, 21 0x000c, 0x000d, 0x000e, 0x000f, 22 /* 0x10*/ 22 /* 0x10*/ 23 0x0010, 0x0011, 0x0012, 0x0013, 23 0x0010, 0x0011, 0x0012, 0x0013, 24 0x0014, 0x0015, 0x0016, 0x0017, 24 0x0014, 0x0015, 0x0016, 0x0017, 25 0x0018, 0x0019, 0x001a, 0x001b, 25 0x0018, 0x0019, 0x001a, 0x001b, 26 0x001c, 0x001d, 0x001e, 0x001f, 26 0x001c, 0x001d, 0x001e, 0x001f, 27 /* 0x20*/ 27 /* 0x20*/ 28 0x0020, 0x0021, 0x0022, 0x0023, 28 0x0020, 0x0021, 0x0022, 0x0023, 29 0x0024, 0x0025, 0x0026, 0x0027, 29 0x0024, 0x0025, 0x0026, 0x0027, 30 0x0028, 0x0029, 0x002a, 0x002b, 30 0x0028, 0x0029, 0x002a, 0x002b, 31 0x002c, 0x002d, 0x002e, 0x002f, 31 0x002c, 0x002d, 0x002e, 0x002f, 32 /* 0x30*/ 32 /* 0x30*/ 33 0x0030, 0x0031, 0x0032, 0x0033, 33 0x0030, 0x0031, 0x0032, 0x0033, 34 0x0034, 0x0035, 0x0036, 0x0037, 34 0x0034, 0x0035, 0x0036, 0x0037, 35 0x0038, 0x0039, 0x003a, 0x003b, 35 0x0038, 0x0039, 0x003a, 0x003b, 36 0x003c, 0x003d, 0x003e, 0x003f, 36 0x003c, 0x003d, 0x003e, 0x003f, 37 /* 0x40*/ 37 /* 0x40*/ 38 0x0040, 0x0041, 0x0042, 0x0043, 38 0x0040, 0x0041, 0x0042, 0x0043, 39 0x0044, 0x0045, 0x0046, 0x0047, 39 0x0044, 0x0045, 0x0046, 0x0047, 40 0x0048, 0x0049, 0x004a, 0x004b, 40 0x0048, 0x0049, 0x004a, 0x004b, 41 0x004c, 0x004d, 0x004e, 0x004f, 41 0x004c, 0x004d, 0x004e, 0x004f, 42 /* 0x50*/ 42 /* 0x50*/ 43 0x0050, 0x0051, 0x0052, 0x0053, 43 0x0050, 0x0051, 0x0052, 0x0053, 44 0x0054, 0x0055, 0x0056, 0x0057, 44 0x0054, 0x0055, 0x0056, 0x0057, 45 0x0058, 0x0059, 0x005a, 0x005b, 45 0x0058, 0x0059, 0x005a, 0x005b, 46 0x005c, 0x005d, 0x005e, 0x005f, 46 0x005c, 0x005d, 0x005e, 0x005f, 47 /* 0x60*/ 47 /* 0x60*/ 48 0x0060, 0x0061, 0x0062, 0x0063, 48 0x0060, 0x0061, 0x0062, 0x0063, 49 0x0064, 0x0065, 0x0066, 0x0067, 49 0x0064, 0x0065, 0x0066, 0x0067, 50 0x0068, 0x0069, 0x006a, 0x006b, 50 0x0068, 0x0069, 0x006a, 0x006b, 51 0x006c, 0x006d, 0x006e, 0x006f, 51 0x006c, 0x006d, 0x006e, 0x006f, 52 /* 0x70*/ 52 /* 0x70*/ 53 0x0070, 0x0071, 0x0072, 0x0073, 53 0x0070, 0x0071, 0x0072, 0x0073, 54 0x0074, 0x0075, 0x0076, 0x0077, 54 0x0074, 0x0075, 0x0076, 0x0077, 55 0x0078, 0x0079, 0x007a, 0x007b, 55 0x0078, 0x0079, 0x007a, 0x007b, 56 0x007c, 0x007d, 0x007e, 0x007f, 56 0x007c, 0x007d, 0x007e, 0x007f, 57 /* 0x80*/ 57 /* 0x80*/ 58 0x00c7, 0x00fc, 0x00e9, 0x00e2, 58 0x00c7, 0x00fc, 0x00e9, 0x00e2, 59 0x00c2, 0x00e0, 0x00b6, 0x00e7, 59 0x00c2, 0x00e0, 0x00b6, 0x00e7, 60 0x00ea, 0x00eb, 0x00e8, 0x00ef, 60 0x00ea, 0x00eb, 0x00e8, 0x00ef, 61 0x00ee, 0x2017, 0x00c0, 0x00a7, 61 0x00ee, 0x2017, 0x00c0, 0x00a7, 62 /* 0x90*/ 62 /* 0x90*/ 63 0x00c9, 0x00c8, 0x00ca, 0x00f4, 63 0x00c9, 0x00c8, 0x00ca, 0x00f4, 64 0x00cb, 0x00cf, 0x00fb, 0x00f9, 64 0x00cb, 0x00cf, 0x00fb, 0x00f9, 65 0x00a4, 0x00d4, 0x00dc, 0x00a2, 65 0x00a4, 0x00d4, 0x00dc, 0x00a2, 66 0x00a3, 0x00d9, 0x00db, 0x0192, 66 0x00a3, 0x00d9, 0x00db, 0x0192, 67 /* 0xa0*/ 67 /* 0xa0*/ 68 0x00a6, 0x00b4, 0x00f3, 0x00fa, 68 0x00a6, 0x00b4, 0x00f3, 0x00fa, 69 0x00a8, 0x00b8, 0x00b3, 0x00af, 69 0x00a8, 0x00b8, 0x00b3, 0x00af, 70 0x00ce, 0x2310, 0x00ac, 0x00bd, 70 0x00ce, 0x2310, 0x00ac, 0x00bd, 71 0x00bc, 0x00be, 0x00ab, 0x00bb, 71 0x00bc, 0x00be, 0x00ab, 0x00bb, 72 /* 0xb0*/ 72 /* 0xb0*/ 73 0x2591, 0x2592, 0x2593, 0x2502, 73 0x2591, 0x2592, 0x2593, 0x2502, 74 0x2524, 0x2561, 0x2562, 0x2556, 74 0x2524, 0x2561, 0x2562, 0x2556, 75 0x2555, 0x2563, 0x2551, 0x2557, 75 0x2555, 0x2563, 0x2551, 0x2557, 76 0x255d, 0x255c, 0x255b, 0x2510, 76 0x255d, 0x255c, 0x255b, 0x2510, 77 /* 0xc0*/ 77 /* 0xc0*/ 78 0x2514, 0x2534, 0x252c, 0x251c, 78 0x2514, 0x2534, 0x252c, 0x251c, 79 0x2500, 0x253c, 0x255e, 0x255f, 79 0x2500, 0x253c, 0x255e, 0x255f, 80 0x255a, 0x2554, 0x2569, 0x2566, 80 0x255a, 0x2554, 0x2569, 0x2566, 81 0x2560, 0x2550, 0x256c, 0x2567, 81 0x2560, 0x2550, 0x256c, 0x2567, 82 /* 0xd0*/ 82 /* 0xd0*/ 83 0x2568, 0x2564, 0x2565, 0x2559, 83 0x2568, 0x2564, 0x2565, 0x2559, 84 0x2558, 0x2552, 0x2553, 0x256b, 84 0x2558, 0x2552, 0x2553, 0x256b, 85 0x256a, 0x2518, 0x250c, 0x2588, 85 0x256a, 0x2518, 0x250c, 0x2588, 86 0x2584, 0x258c, 0x2590, 0x2580, 86 0x2584, 0x258c, 0x2590, 0x2580, 87 /* 0xe0*/ 87 /* 0xe0*/ 88 0x03b1, 0x00df, 0x0393, 0x03c0, 88 0x03b1, 0x00df, 0x0393, 0x03c0, 89 0x03a3, 0x03c3, 0x00b5, 0x03c4, 89 0x03a3, 0x03c3, 0x00b5, 0x03c4, 90 0x03a6, 0x0398, 0x03a9, 0x03b4, 90 0x03a6, 0x0398, 0x03a9, 0x03b4, 91 0x221e, 0x03c6, 0x03b5, 0x2229, 91 0x221e, 0x03c6, 0x03b5, 0x2229, 92 /* 0xf0*/ 92 /* 0xf0*/ 93 0x2261, 0x00b1, 0x2265, 0x2264, 93 0x2261, 0x00b1, 0x2265, 0x2264, 94 0x2320, 0x2321, 0x00f7, 0x2248, 94 0x2320, 0x2321, 0x00f7, 0x2248, 95 0x00b0, 0x2219, 0x00b7, 0x221a, 95 0x00b0, 0x2219, 0x00b7, 0x221a, 96 0x207f, 0x00b2, 0x25a0, 0x00a0, 96 0x207f, 0x00b2, 0x25a0, 0x00a0, 97 }; 97 }; 98 98 99 static const unsigned char page00[256] = { 99 static const unsigned char page00[256] = { 100 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x 100 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */ 101 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x 101 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */ 102 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x 102 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */ 103 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x 103 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */ 104 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x 104 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */ 105 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x 105 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */ 106 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x 106 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */ 107 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x 107 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */ 108 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x 108 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x40-0x47 */ 109 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x 109 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x48-0x4f */ 110 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x 110 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x50-0x57 */ 111 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x 111 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */ 112 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x 112 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x60-0x67 */ 113 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x 113 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x68-0x6f */ 114 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x 114 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x70-0x77 */ 115 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x 115 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */ 116 116 117 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 117 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 118 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 118 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 119 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 119 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 120 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 120 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 121 0xff, 0x00, 0x9b, 0x9c, 0x98, 0x00, 0x 121 0xff, 0x00, 0x9b, 0x9c, 0x98, 0x00, 0xa0, 0x8f, /* 0xa0-0xa7 */ 122 0xa4, 0x00, 0x00, 0xae, 0xaa, 0x00, 0x 122 0xa4, 0x00, 0x00, 0xae, 0xaa, 0x00, 0x00, 0xa7, /* 0xa8-0xaf */ 123 0xf8, 0xf1, 0xfd, 0xa6, 0xa1, 0xe6, 0x 123 0xf8, 0xf1, 0xfd, 0xa6, 0xa1, 0xe6, 0x86, 0xfa, /* 0xb0-0xb7 */ 124 0xa5, 0x00, 0x00, 0xaf, 0xac, 0xab, 0x 124 0xa5, 0x00, 0x00, 0xaf, 0xac, 0xab, 0xad, 0x00, /* 0xb8-0xbf */ 125 0x8e, 0x00, 0x84, 0x00, 0x00, 0x00, 0x 125 0x8e, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0xc0-0xc7 */ 126 0x91, 0x90, 0x92, 0x94, 0x00, 0x00, 0x 126 0x91, 0x90, 0x92, 0x94, 0x00, 0x00, 0xa8, 0x95, /* 0xc8-0xcf */ 127 0x00, 0x00, 0x00, 0x00, 0x99, 0x00, 0x 127 0x00, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 128 0x00, 0x9d, 0x00, 0x9e, 0x9a, 0x00, 0x 128 0x00, 0x9d, 0x00, 0x9e, 0x9a, 0x00, 0x00, 0xe1, /* 0xd8-0xdf */ 129 0x85, 0x00, 0x83, 0x00, 0x00, 0x00, 0x 129 0x85, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x87, /* 0xe0-0xe7 */ 130 0x8a, 0x82, 0x88, 0x89, 0x00, 0x00, 0x 130 0x8a, 0x82, 0x88, 0x89, 0x00, 0x00, 0x8c, 0x8b, /* 0xe8-0xef */ 131 0x00, 0x00, 0x00, 0xa2, 0x93, 0x00, 0x 131 0x00, 0x00, 0x00, 0xa2, 0x93, 0x00, 0x00, 0xf6, /* 0xf0-0xf7 */ 132 0x00, 0x97, 0xa3, 0x96, 0x81, 0x00, 0x 132 0x00, 0x97, 0xa3, 0x96, 0x81, 0x00, 0x00, 0x00, /* 0xf8-0xff */ 133 }; 133 }; 134 134 135 static const unsigned char page01[256] = { 135 static const unsigned char page01[256] = { 136 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 136 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 137 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 137 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 139 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 139 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 140 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 140 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 141 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 141 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 142 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 142 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 143 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 143 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 144 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 144 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 145 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 145 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 146 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 146 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 148 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 148 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 149 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 149 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 150 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 150 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 151 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 151 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 152 152 153 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 153 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 154 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 154 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 155 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x 155 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 156 }; 156 }; 157 157 158 static const unsigned char page03[256] = { 158 static const unsigned char page03[256] = { 159 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 159 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 160 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 160 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 161 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 161 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 162 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 162 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 165 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 165 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 167 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 167 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 169 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 169 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 170 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 170 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 171 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 171 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 172 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 172 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 174 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 174 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 175 175 176 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 176 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 177 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 177 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 178 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x 178 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 179 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 179 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 180 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x 180 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0xe8, 0x00, /* 0xa0-0xa7 */ 181 0x00, 0xea, 0x00, 0x00, 0x00, 0x00, 0x 181 0x00, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ 182 0x00, 0xe0, 0x00, 0x00, 0xeb, 0xee, 0x 182 0x00, 0xe0, 0x00, 0x00, 0xeb, 0xee, 0x00, 0x00, /* 0xb0-0xb7 */ 183 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 183 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 184 0xe3, 0x00, 0x00, 0xe5, 0xe7, 0x00, 0x 184 0xe3, 0x00, 0x00, 0xe5, 0xe7, 0x00, 0xed, 0x00, /* 0xc0-0xc7 */ 185 }; 185 }; 186 186 187 static const unsigned char page20[256] = { 187 static const unsigned char page20[256] = { 188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 189 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 189 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, /* 0x10-0x17 */ 191 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 191 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 192 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 192 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 193 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 193 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 194 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 194 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 199 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 199 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 200 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 200 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 201 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 201 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 202 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 202 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 203 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 203 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, /* 0x78-0x7f */ 204 }; 204 }; 205 205 206 static const unsigned char page22[256] = { 206 static const unsigned char page22[256] = { 207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 210 0x00, 0xf9, 0xfb, 0x00, 0x00, 0x00, 0x 210 0x00, 0xf9, 0xfb, 0x00, 0x00, 0x00, 0xec, 0x00, /* 0x18-0x1f */ 211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 212 0x00, 0xef, 0x00, 0x00, 0x00, 0x00, 0x 212 0x00, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 215 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 215 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 216 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 216 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 217 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 217 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 218 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 218 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 219 0x00, 0xf0, 0x00, 0x00, 0xf3, 0xf2, 0x 219 0x00, 0xf0, 0x00, 0x00, 0xf3, 0xf2, 0x00, 0x00, /* 0x60-0x67 */ 220 }; 220 }; 221 221 222 static const unsigned char page23[256] = { 222 static const unsigned char page23[256] = { 223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 225 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 225 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 226 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 226 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 227 0xf4, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x 227 0xf4, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 228 }; 228 }; 229 229 230 static const unsigned char page25[256] = { 230 static const unsigned char page25[256] = { 231 0xc4, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x 231 0xc4, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 232 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x 232 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 233 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x 233 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 234 0xd9, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x 234 0xd9, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 235 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x 235 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 236 0x00, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x 236 0x00, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 237 0x00, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x 237 0x00, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 238 0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x 238 0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 239 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 239 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 241 0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0x 241 0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0xb7, 0xbb, /* 0x50-0x57 */ 242 0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0x 242 0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0xc6, 0xc7, /* 0x58-0x5f */ 243 0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0x 243 0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0xcb, 0xcf, /* 0x60-0x67 */ 244 0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x00, 0x 244 0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 247 247 248 0xdf, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x 248 0xdf, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 249 0xdb, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x 249 0xdb, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 250 0xde, 0xb0, 0xb1, 0xb2, 0x00, 0x00, 0x 250 0xde, 0xb0, 0xb1, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 251 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 251 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 252 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 252 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 253 }; 253 }; 254 254 255 static const unsigned char *const page_uni2cha 255 static const unsigned char *const page_uni2charset[256] = { 256 page00, page01, NULL, page03, NULL, 256 page00, page01, NULL, page03, NULL, NULL, NULL, NULL, 257 NULL, NULL, NULL, NULL, NULL, 257 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 258 NULL, NULL, NULL, NULL, NULL, 258 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 259 NULL, NULL, NULL, NULL, NULL, 259 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 260 page20, NULL, page22, page23, NULL, 260 page20, NULL, page22, page23, NULL, page25, NULL, NULL, 261 }; 261 }; 262 262 263 static const unsigned char charset2lower[256] 263 static const unsigned char charset2lower[256] = { 264 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x 264 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */ 265 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x 265 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */ 266 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x 266 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */ 267 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x 267 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */ 268 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x 268 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */ 269 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x 269 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */ 270 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x 270 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */ 271 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x 271 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */ 272 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x 272 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x40-0x47 */ 273 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x 273 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x48-0x4f */ 274 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x 274 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x50-0x57 */ 275 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x 275 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */ 276 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x 276 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x60-0x67 */ 277 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x 277 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x68-0x6f */ 278 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x 278 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x70-0x77 */ 279 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x 279 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */ 280 280 281 0x87, 0x81, 0x82, 0x83, 0x83, 0x85, 0x 281 0x87, 0x81, 0x82, 0x83, 0x83, 0x85, 0x86, 0x87, /* 0x80-0x87 */ 282 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x 282 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x85, 0x8f, /* 0x88-0x8f */ 283 0x82, 0x8a, 0x88, 0x93, 0x89, 0x8b, 0x 283 0x82, 0x8a, 0x88, 0x93, 0x89, 0x8b, 0x96, 0x97, /* 0x90-0x97 */ 284 0x98, 0x93, 0x81, 0x9b, 0x9c, 0x97, 0x 284 0x98, 0x93, 0x81, 0x9b, 0x9c, 0x97, 0x96, 0x9f, /* 0x98-0x9f */ 285 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x 285 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */ 286 0x8c, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0x 286 0x8c, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */ 287 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x 287 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 288 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x 288 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */ 289 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x 289 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */ 290 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x 290 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */ 291 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x 291 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */ 292 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x 292 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */ 293 0xe0, 0xe1, 0x00, 0xe3, 0xe5, 0xe5, 0x 293 0xe0, 0xe1, 0x00, 0xe3, 0xe5, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */ 294 0xed, 0x00, 0x00, 0xeb, 0xec, 0xed, 0x 294 0xed, 0x00, 0x00, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */ 295 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x 295 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */ 296 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x 296 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0xf8-0xff */ 297 }; 297 }; 298 298 299 static const unsigned char charset2upper[256] 299 static const unsigned char charset2upper[256] = { 300 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x 300 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */ 301 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x 301 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */ 302 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x 302 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */ 303 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x 303 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */ 304 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x 304 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */ 305 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x 305 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */ 306 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x 306 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */ 307 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x 307 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */ 308 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x 308 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x40-0x47 */ 309 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x 309 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x48-0x4f */ 310 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x 310 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x50-0x57 */ 311 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x 311 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */ 312 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x 312 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x60-0x67 */ 313 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x 313 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x68-0x6f */ 314 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x 314 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x70-0x77 */ 315 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x 315 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */ 316 316 317 0x80, 0x9a, 0x90, 0x84, 0x84, 0x8e, 0x 317 0x80, 0x9a, 0x90, 0x84, 0x84, 0x8e, 0x86, 0x80, /* 0x80-0x87 */ 318 0x92, 0x94, 0x91, 0x95, 0xa8, 0x8d, 0x 318 0x92, 0x94, 0x91, 0x95, 0xa8, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */ 319 0x90, 0x91, 0x92, 0x99, 0x94, 0x95, 0x 319 0x90, 0x91, 0x92, 0x99, 0x94, 0x95, 0x9e, 0x9d, /* 0x90-0x97 */ 320 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x 320 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */ 321 0xa0, 0xa1, 0x00, 0x00, 0xa4, 0xa5, 0x 321 0xa0, 0xa1, 0x00, 0x00, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */ 322 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0x 322 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */ 323 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x 323 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 324 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x 324 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */ 325 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x 325 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */ 326 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x 326 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */ 327 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x 327 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */ 328 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x 328 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */ 329 0x00, 0xe1, 0xe2, 0x00, 0xe4, 0xe4, 0x 329 0x00, 0xe1, 0xe2, 0x00, 0xe4, 0xe4, 0x00, 0x00, /* 0xe0-0xe7 */ 330 0xe8, 0xe9, 0xea, 0x00, 0xec, 0xe8, 0x 330 0xe8, 0xe9, 0xea, 0x00, 0xec, 0xe8, 0x00, 0xef, /* 0xe8-0xef */ 331 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x 331 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */ 332 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x 332 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0xf8-0xff */ 333 }; 333 }; 334 334 335 static int uni2char(wchar_t uni, unsigned char 335 static int uni2char(wchar_t uni, unsigned char *out, int boundlen) 336 { 336 { 337 const unsigned char *uni2charset; 337 const unsigned char *uni2charset; 338 unsigned char cl = uni & 0x00ff; 338 unsigned char cl = uni & 0x00ff; 339 unsigned char ch = (uni & 0xff00) >> 8 339 unsigned char ch = (uni & 0xff00) >> 8; 340 340 341 if (boundlen <= 0) 341 if (boundlen <= 0) 342 return -ENAMETOOLONG; 342 return -ENAMETOOLONG; 343 343 344 uni2charset = page_uni2charset[ch]; 344 uni2charset = page_uni2charset[ch]; 345 if (uni2charset && uni2charset[cl]) 345 if (uni2charset && uni2charset[cl]) 346 out[0] = uni2charset[cl]; 346 out[0] = uni2charset[cl]; 347 else 347 else 348 return -EINVAL; 348 return -EINVAL; 349 return 1; 349 return 1; 350 } 350 } 351 351 352 static int char2uni(const unsigned char *rawst 352 static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni) 353 { 353 { 354 *uni = charset2uni[*rawstring]; 354 *uni = charset2uni[*rawstring]; 355 if (*uni == 0x0000) 355 if (*uni == 0x0000) 356 return -EINVAL; 356 return -EINVAL; 357 return 1; 357 return 1; 358 } 358 } 359 359 360 static struct nls_table table = { 360 static struct nls_table table = { 361 .charset = "cp863", 361 .charset = "cp863", 362 .uni2char = uni2char, 362 .uni2char = uni2char, 363 .char2uni = char2uni, 363 .char2uni = char2uni, 364 .charset2lower = charset2lower, 364 .charset2lower = charset2lower, 365 .charset2upper = charset2upper, 365 .charset2upper = charset2upper, 366 }; 366 }; 367 367 368 static int __init init_nls_cp863(void) 368 static int __init init_nls_cp863(void) 369 { 369 { 370 return register_nls(&table); 370 return register_nls(&table); 371 } 371 } 372 372 373 static void __exit exit_nls_cp863(void) 373 static void __exit exit_nls_cp863(void) 374 { 374 { 375 unregister_nls(&table); 375 unregister_nls(&table); 376 } 376 } 377 377 378 module_init(init_nls_cp863) 378 module_init(init_nls_cp863) 379 module_exit(exit_nls_cp863) 379 module_exit(exit_nls_cp863) 380 380 381 MODULE_DESCRIPTION("NLS Codepage 863 (Canadian 381 MODULE_DESCRIPTION("NLS Codepage 863 (Canadian French)"); 382 MODULE_LICENSE("Dual BSD/GPL"); 382 MODULE_LICENSE("Dual BSD/GPL"); 383 383
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.