1 /* 1 /* 2 * linux/fs/nls/nls_cp861.c 2 * linux/fs/nls/nls_cp861.c 3 * 3 * 4 * Charset cp861 translation tables. 4 * Charset cp861 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 0x00e4, 0x00e0, 0x00e5, 0x00e7, 59 0x00e4, 0x00e0, 0x00e5, 0x00e7, 60 0x00ea, 0x00eb, 0x00e8, 0x00d0, 60 0x00ea, 0x00eb, 0x00e8, 0x00d0, 61 0x00f0, 0x00de, 0x00c4, 0x00c5, 61 0x00f0, 0x00de, 0x00c4, 0x00c5, 62 /* 0x90*/ 62 /* 0x90*/ 63 0x00c9, 0x00e6, 0x00c6, 0x00f4, 63 0x00c9, 0x00e6, 0x00c6, 0x00f4, 64 0x00f6, 0x00fe, 0x00fb, 0x00dd, 64 0x00f6, 0x00fe, 0x00fb, 0x00dd, 65 0x00fd, 0x00d6, 0x00dc, 0x00f8, 65 0x00fd, 0x00d6, 0x00dc, 0x00f8, 66 0x00a3, 0x00d8, 0x20a7, 0x0192, 66 0x00a3, 0x00d8, 0x20a7, 0x0192, 67 /* 0xa0*/ 67 /* 0xa0*/ 68 0x00e1, 0x00ed, 0x00f3, 0x00fa, 68 0x00e1, 0x00ed, 0x00f3, 0x00fa, 69 0x00c1, 0x00cd, 0x00d3, 0x00da, 69 0x00c1, 0x00cd, 0x00d3, 0x00da, 70 0x00bf, 0x2310, 0x00ac, 0x00bd, 70 0x00bf, 0x2310, 0x00ac, 0x00bd, 71 0x00bc, 0x00a1, 0x00ab, 0x00bb, 71 0x00bc, 0x00a1, 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, 0xad, 0x00, 0x9c, 0x00, 0x00, 0x 121 0xff, 0xad, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 122 0x00, 0x00, 0x00, 0xae, 0xaa, 0x00, 0x 122 0x00, 0x00, 0x00, 0xae, 0xaa, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ 123 0xf8, 0xf1, 0xfd, 0x00, 0x00, 0xe6, 0x 123 0xf8, 0xf1, 0xfd, 0x00, 0x00, 0xe6, 0x00, 0xfa, /* 0xb0-0xb7 */ 124 0x00, 0x00, 0x00, 0xaf, 0xac, 0xab, 0x 124 0x00, 0x00, 0x00, 0xaf, 0xac, 0xab, 0x00, 0xa8, /* 0xb8-0xbf */ 125 0x00, 0xa4, 0x00, 0x00, 0x8e, 0x8f, 0x 125 0x00, 0xa4, 0x00, 0x00, 0x8e, 0x8f, 0x92, 0x80, /* 0xc0-0xc7 */ 126 0x00, 0x90, 0x00, 0x00, 0x00, 0xa5, 0x 126 0x00, 0x90, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, /* 0xc8-0xcf */ 127 0x8b, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x 127 0x8b, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x99, 0x00, /* 0xd0-0xd7 */ 128 0x9d, 0x00, 0xa7, 0x00, 0x9a, 0x97, 0x 128 0x9d, 0x00, 0xa7, 0x00, 0x9a, 0x97, 0x8d, 0xe1, /* 0xd8-0xdf */ 129 0x85, 0xa0, 0x83, 0x00, 0x84, 0x86, 0x 129 0x85, 0xa0, 0x83, 0x00, 0x84, 0x86, 0x91, 0x87, /* 0xe0-0xe7 */ 130 0x8a, 0x82, 0x88, 0x89, 0x00, 0xa1, 0x 130 0x8a, 0x82, 0x88, 0x89, 0x00, 0xa1, 0x00, 0x00, /* 0xe8-0xef */ 131 0x8c, 0x00, 0x00, 0xa2, 0x93, 0x00, 0x 131 0x8c, 0x00, 0x00, 0xa2, 0x93, 0x00, 0x94, 0xf6, /* 0xf0-0xf7 */ 132 0x9b, 0x00, 0xa3, 0x96, 0x81, 0x98, 0x 132 0x9b, 0x00, 0xa3, 0x96, 0x81, 0x98, 0x95, 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, 0x00, /* 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 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 205 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 206 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 206 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xa0-0xa7 */ 210 }; 210 }; 211 211 212 static const unsigned char page22[256] = { 212 static const unsigned char page22[256] = { 213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 215 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 215 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 216 0x00, 0xf9, 0xfb, 0x00, 0x00, 0x00, 0x 216 0x00, 0xf9, 0xfb, 0x00, 0x00, 0x00, 0xec, 0x00, /* 0x18-0x1f */ 217 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 217 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 218 0x00, 0xef, 0x00, 0x00, 0x00, 0x00, 0x 218 0x00, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 219 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 219 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 220 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 220 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 221 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 221 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 222 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 222 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 225 0x00, 0xf0, 0x00, 0x00, 0xf3, 0xf2, 0x 225 0x00, 0xf0, 0x00, 0x00, 0xf3, 0xf2, 0x00, 0x00, /* 0x60-0x67 */ 226 }; 226 }; 227 227 228 static const unsigned char page23[256] = { 228 static const unsigned char page23[256] = { 229 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 229 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 231 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 231 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 232 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 232 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 233 0xf4, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x 233 0xf4, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 234 }; 234 }; 235 235 236 static const unsigned char page25[256] = { 236 static const unsigned char page25[256] = { 237 0xc4, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x 237 0xc4, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 238 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x 238 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 239 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x 239 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 240 0xd9, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x 240 0xd9, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 241 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x 241 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 242 0x00, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x 242 0x00, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 243 0x00, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x 243 0x00, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 244 0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x 244 0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 247 0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0x 247 0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0xb7, 0xbb, /* 0x50-0x57 */ 248 0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0x 248 0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0xc6, 0xc7, /* 0x58-0x5f */ 249 0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0x 249 0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0xcb, 0xcf, /* 0x60-0x67 */ 250 0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x00, 0x 250 0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 251 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 251 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 252 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 252 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 253 253 254 0xdf, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x 254 0xdf, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 255 0xdb, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x 255 0xdb, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 256 0xde, 0xb0, 0xb1, 0xb2, 0x00, 0x00, 0x 256 0xde, 0xb0, 0xb1, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 257 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 257 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 258 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 258 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 259 }; 259 }; 260 260 261 static const unsigned char *const page_uni2cha 261 static const unsigned char *const page_uni2charset[256] = { 262 page00, page01, NULL, page03, NULL, 262 page00, page01, NULL, page03, NULL, NULL, NULL, NULL, 263 NULL, NULL, NULL, NULL, NULL, 263 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 264 NULL, NULL, NULL, NULL, NULL, 264 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 265 NULL, NULL, NULL, NULL, NULL, 265 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 266 page20, NULL, page22, page23, NULL, 266 page20, NULL, page22, page23, NULL, page25, NULL, NULL, 267 }; 267 }; 268 268 269 static const unsigned char charset2lower[256] 269 static const unsigned char charset2lower[256] = { 270 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x 270 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */ 271 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x 271 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */ 272 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x 272 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */ 273 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x 273 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */ 274 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x 274 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */ 275 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x 275 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */ 276 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x 276 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */ 277 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x 277 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */ 278 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x 278 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x40-0x47 */ 279 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x 279 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x48-0x4f */ 280 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x 280 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x50-0x57 */ 281 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x 281 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */ 282 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x 282 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x60-0x67 */ 283 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x 283 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x68-0x6f */ 284 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x 284 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x70-0x77 */ 285 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x 285 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */ 286 286 287 0x87, 0x81, 0x82, 0x83, 0x84, 0x85, 0x 287 0x87, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x80-0x87 */ 288 0x88, 0x89, 0x8a, 0x8c, 0x8c, 0x95, 0x 288 0x88, 0x89, 0x8a, 0x8c, 0x8c, 0x95, 0x84, 0x86, /* 0x88-0x8f */ 289 0x82, 0x91, 0x91, 0x93, 0x94, 0x95, 0x 289 0x82, 0x91, 0x91, 0x93, 0x94, 0x95, 0x96, 0x98, /* 0x90-0x97 */ 290 0x98, 0x94, 0x81, 0x9b, 0x9c, 0x9b, 0x 290 0x98, 0x94, 0x81, 0x9b, 0x9c, 0x9b, 0x9e, 0x9f, /* 0x98-0x9f */ 291 0xa0, 0xa1, 0xa2, 0xa3, 0xa0, 0xa1, 0x 291 0xa0, 0xa1, 0xa2, 0xa3, 0xa0, 0xa1, 0xa2, 0xa3, /* 0xa0-0xa7 */ 292 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0x 292 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */ 293 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x 293 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 294 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x 294 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */ 295 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x 295 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */ 296 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x 296 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */ 297 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x 297 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */ 298 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x 298 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */ 299 0xe0, 0xe1, 0x00, 0xe3, 0xe5, 0xe5, 0x 299 0xe0, 0xe1, 0x00, 0xe3, 0xe5, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */ 300 0xed, 0x00, 0x00, 0xeb, 0xec, 0xed, 0x 300 0xed, 0x00, 0x00, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */ 301 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x 301 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */ 302 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x 302 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0xf8-0xff */ 303 }; 303 }; 304 304 305 static const unsigned char charset2upper[256] 305 static const unsigned char charset2upper[256] = { 306 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x 306 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */ 307 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x 307 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */ 308 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x 308 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */ 309 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x 309 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */ 310 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x 310 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */ 311 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x 311 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */ 312 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x 312 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */ 313 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x 313 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */ 314 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x 314 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x40-0x47 */ 315 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x 315 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x48-0x4f */ 316 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x 316 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x50-0x57 */ 317 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x 317 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */ 318 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x 318 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x60-0x67 */ 319 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x 319 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x68-0x6f */ 320 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x 320 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x70-0x77 */ 321 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x 321 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */ 322 322 323 0x80, 0x9a, 0x90, 0x00, 0x8e, 0x00, 0x 323 0x80, 0x9a, 0x90, 0x00, 0x8e, 0x00, 0x8f, 0x80, /* 0x80-0x87 */ 324 0x00, 0x00, 0x00, 0x8b, 0x8b, 0x8d, 0x 324 0x00, 0x00, 0x00, 0x8b, 0x8b, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */ 325 0x90, 0x92, 0x92, 0x00, 0x99, 0x8d, 0x 325 0x90, 0x92, 0x92, 0x00, 0x99, 0x8d, 0x00, 0x97, /* 0x90-0x97 */ 326 0x97, 0x99, 0x9a, 0x9d, 0x9c, 0x9d, 0x 326 0x97, 0x99, 0x9a, 0x9d, 0x9c, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */ 327 0xa4, 0xa5, 0xa6, 0xa7, 0xa4, 0xa5, 0x 327 0xa4, 0xa5, 0xa6, 0xa7, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */ 328 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0x 328 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */ 329 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x 329 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 330 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x 330 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */ 331 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x 331 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */ 332 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x 332 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */ 333 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x 333 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */ 334 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x 334 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */ 335 0x00, 0xe1, 0xe2, 0x00, 0xe4, 0xe4, 0x 335 0x00, 0xe1, 0xe2, 0x00, 0xe4, 0xe4, 0x00, 0x00, /* 0xe0-0xe7 */ 336 0xe8, 0xe9, 0xea, 0x00, 0xec, 0xe8, 0x 336 0xe8, 0xe9, 0xea, 0x00, 0xec, 0xe8, 0x00, 0xef, /* 0xe8-0xef */ 337 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x 337 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */ 338 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x 338 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0xf8-0xff */ 339 }; 339 }; 340 340 341 static int uni2char(wchar_t uni, unsigned char 341 static int uni2char(wchar_t uni, unsigned char *out, int boundlen) 342 { 342 { 343 const unsigned char *uni2charset; 343 const unsigned char *uni2charset; 344 unsigned char cl = uni & 0x00ff; 344 unsigned char cl = uni & 0x00ff; 345 unsigned char ch = (uni & 0xff00) >> 8 345 unsigned char ch = (uni & 0xff00) >> 8; 346 346 347 if (boundlen <= 0) 347 if (boundlen <= 0) 348 return -ENAMETOOLONG; 348 return -ENAMETOOLONG; 349 349 350 uni2charset = page_uni2charset[ch]; 350 uni2charset = page_uni2charset[ch]; 351 if (uni2charset && uni2charset[cl]) 351 if (uni2charset && uni2charset[cl]) 352 out[0] = uni2charset[cl]; 352 out[0] = uni2charset[cl]; 353 else 353 else 354 return -EINVAL; 354 return -EINVAL; 355 return 1; 355 return 1; 356 } 356 } 357 357 358 static int char2uni(const unsigned char *rawst 358 static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni) 359 { 359 { 360 *uni = charset2uni[*rawstring]; 360 *uni = charset2uni[*rawstring]; 361 if (*uni == 0x0000) 361 if (*uni == 0x0000) 362 return -EINVAL; 362 return -EINVAL; 363 return 1; 363 return 1; 364 } 364 } 365 365 366 static struct nls_table table = { 366 static struct nls_table table = { 367 .charset = "cp861", 367 .charset = "cp861", 368 .uni2char = uni2char, 368 .uni2char = uni2char, 369 .char2uni = char2uni, 369 .char2uni = char2uni, 370 .charset2lower = charset2lower, 370 .charset2lower = charset2lower, 371 .charset2upper = charset2upper, 371 .charset2upper = charset2upper, 372 }; 372 }; 373 373 374 static int __init init_nls_cp861(void) 374 static int __init init_nls_cp861(void) 375 { 375 { 376 return register_nls(&table); 376 return register_nls(&table); 377 } 377 } 378 378 379 static void __exit exit_nls_cp861(void) 379 static void __exit exit_nls_cp861(void) 380 { 380 { 381 unregister_nls(&table); 381 unregister_nls(&table); 382 } 382 } 383 383 384 module_init(init_nls_cp861) 384 module_init(init_nls_cp861) 385 module_exit(exit_nls_cp861) 385 module_exit(exit_nls_cp861) 386 386 387 MODULE_DESCRIPTION("NLS Codepage 861 (Icelandi 387 MODULE_DESCRIPTION("NLS Codepage 861 (Icelandic)"); 388 MODULE_LICENSE("Dual BSD/GPL"); 388 MODULE_LICENSE("Dual BSD/GPL"); 389 389
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.