1 /* 1 /* 2 * linux/fs/nls/nls_cp737.c 2 * linux/fs/nls/nls_cp737.c 3 * 3 * 4 * Charset cp737 translation tables. 4 * Charset cp737 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 0x0391, 0x0392, 0x0393, 0x0394, 58 0x0391, 0x0392, 0x0393, 0x0394, 59 0x0395, 0x0396, 0x0397, 0x0398, 59 0x0395, 0x0396, 0x0397, 0x0398, 60 0x0399, 0x039a, 0x039b, 0x039c, 60 0x0399, 0x039a, 0x039b, 0x039c, 61 0x039d, 0x039e, 0x039f, 0x03a0, 61 0x039d, 0x039e, 0x039f, 0x03a0, 62 /* 0x90*/ 62 /* 0x90*/ 63 0x03a1, 0x03a3, 0x03a4, 0x03a5, 63 0x03a1, 0x03a3, 0x03a4, 0x03a5, 64 0x03a6, 0x03a7, 0x03a8, 0x03a9, 64 0x03a6, 0x03a7, 0x03a8, 0x03a9, 65 0x03b1, 0x03b2, 0x03b3, 0x03b4, 65 0x03b1, 0x03b2, 0x03b3, 0x03b4, 66 0x03b5, 0x03b6, 0x03b7, 0x03b8, 66 0x03b5, 0x03b6, 0x03b7, 0x03b8, 67 /* 0xa0*/ 67 /* 0xa0*/ 68 0x03b9, 0x03ba, 0x03bb, 0x03bc, 68 0x03b9, 0x03ba, 0x03bb, 0x03bc, 69 0x03bd, 0x03be, 0x03bf, 0x03c0, 69 0x03bd, 0x03be, 0x03bf, 0x03c0, 70 0x03c1, 0x03c3, 0x03c2, 0x03c4, 70 0x03c1, 0x03c3, 0x03c2, 0x03c4, 71 0x03c5, 0x03c6, 0x03c7, 0x03c8, 71 0x03c5, 0x03c6, 0x03c7, 0x03c8, 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 0x03c9, 0x03ac, 0x03ad, 0x03ae, 88 0x03c9, 0x03ac, 0x03ad, 0x03ae, 89 0x03ca, 0x03af, 0x03cc, 0x03cd, 89 0x03ca, 0x03af, 0x03cc, 0x03cd, 90 0x03cb, 0x03ce, 0x0386, 0x0388, 90 0x03cb, 0x03ce, 0x0386, 0x0388, 91 0x0389, 0x038a, 0x038c, 0x038e, 91 0x0389, 0x038a, 0x038c, 0x038e, 92 /* 0xf0*/ 92 /* 0xf0*/ 93 0x038f, 0x00b1, 0x2265, 0x2264, 93 0x038f, 0x00b1, 0x2265, 0x2264, 94 0x03aa, 0x03ab, 0x00f7, 0x2248, 94 0x03aa, 0x03ab, 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, 0x00, 0x00, 0x00, 0x00, 0x 121 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 122 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 122 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ 123 0xf8, 0xf1, 0xfd, 0x00, 0x00, 0x00, 0x 123 0xf8, 0xf1, 0xfd, 0x00, 0x00, 0x00, 0x00, 0xfa, /* 0xb0-0xb7 */ 124 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 124 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 125 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 125 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ 126 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 126 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 127 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 127 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 128 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 128 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ 129 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 129 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */ 130 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 130 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */ 131 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 131 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, /* 0xf0-0xf7 */ 132 }; 132 }; 133 133 134 static const unsigned char page03[256] = { 134 static const unsigned char page03[256] = { 135 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 135 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 136 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 136 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 137 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 137 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 139 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 139 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 140 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 140 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 141 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 141 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 142 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 142 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 143 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 143 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 144 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 144 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 145 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 145 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 146 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 146 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 148 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 148 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 149 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 149 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 150 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 150 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 151 151 152 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 152 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0x00, /* 0x80-0x87 */ 153 0xeb, 0xec, 0xed, 0x00, 0xee, 0x00, 0x 153 0xeb, 0xec, 0xed, 0x00, 0xee, 0x00, 0xef, 0xf0, /* 0x88-0x8f */ 154 0x00, 0x80, 0x81, 0x82, 0x83, 0x84, 0x 154 0x00, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, /* 0x90-0x97 */ 155 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x 155 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, /* 0x98-0x9f */ 156 0x8f, 0x90, 0x00, 0x91, 0x92, 0x93, 0x 156 0x8f, 0x90, 0x00, 0x91, 0x92, 0x93, 0x94, 0x95, /* 0xa0-0xa7 */ 157 0x96, 0x97, 0xf4, 0xf5, 0xe1, 0xe2, 0x 157 0x96, 0x97, 0xf4, 0xf5, 0xe1, 0xe2, 0xe3, 0xe5, /* 0xa8-0xaf */ 158 0x00, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x 158 0x00, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, /* 0xb0-0xb7 */ 159 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0x 159 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0xb8-0xbf */ 160 0xa7, 0xa8, 0xaa, 0xa9, 0xab, 0xac, 0x 160 0xa7, 0xa8, 0xaa, 0xa9, 0xab, 0xac, 0xad, 0xae, /* 0xc0-0xc7 */ 161 0xaf, 0xe0, 0xe4, 0xe8, 0xe6, 0xe7, 0x 161 0xaf, 0xe0, 0xe4, 0xe8, 0xe6, 0xe7, 0xe9, 0x00, /* 0xc8-0xcf */ 162 }; 162 }; 163 163 164 static const unsigned char page20[256] = { 164 static const unsigned char page20[256] = { 165 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 165 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 167 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 167 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 169 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 169 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 170 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 170 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 171 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 171 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 172 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 172 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 174 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 174 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 175 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 175 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 176 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 176 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 177 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 177 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 178 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 178 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 179 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 179 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 180 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 180 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, /* 0x78-0x7f */ 181 }; 181 }; 182 182 183 static const unsigned char page22[256] = { 183 static const unsigned char page22[256] = { 184 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 184 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 185 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 185 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 187 0x00, 0xf9, 0xfb, 0x00, 0x00, 0x00, 0x 187 0x00, 0xf9, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 189 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 189 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 191 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 191 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 192 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 192 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 193 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 193 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 194 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 194 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 196 0x00, 0x00, 0x00, 0x00, 0xf3, 0xf2, 0x 196 0x00, 0x00, 0x00, 0x00, 0xf3, 0xf2, 0x00, 0x00, /* 0x60-0x67 */ 197 }; 197 }; 198 198 199 static const unsigned char page25[256] = { 199 static const unsigned char page25[256] = { 200 0xc4, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x 200 0xc4, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 201 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x 201 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 202 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x 202 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 203 0xd9, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x 203 0xd9, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 204 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x 204 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 205 0x00, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x 205 0x00, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 206 0x00, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x 206 0x00, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 207 0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x 207 0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 210 0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0x 210 0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0xb7, 0xbb, /* 0x50-0x57 */ 211 0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0x 211 0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0xc6, 0xc7, /* 0x58-0x5f */ 212 0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0x 212 0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0xcb, 0xcf, /* 0x60-0x67 */ 213 0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x00, 0x 213 0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 215 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 215 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 216 216 217 0xdf, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x 217 0xdf, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 218 0xdb, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x 218 0xdb, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 219 0xde, 0xb0, 0xb1, 0xb2, 0x00, 0x00, 0x 219 0xde, 0xb0, 0xb1, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 220 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 220 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 221 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 221 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 222 }; 222 }; 223 223 224 static const unsigned char *const page_uni2cha 224 static const unsigned char *const page_uni2charset[256] = { 225 page00, NULL, NULL, page03, NULL, 225 page00, NULL, NULL, page03, NULL, NULL, NULL, NULL, 226 NULL, NULL, NULL, NULL, NULL, 226 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 227 NULL, NULL, NULL, NULL, NULL, 227 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 228 NULL, NULL, NULL, NULL, NULL, 228 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 229 page20, NULL, page22, NULL, NULL, 229 page20, NULL, page22, NULL, NULL, page25, NULL, NULL, 230 }; 230 }; 231 231 232 static const unsigned char charset2lower[256] 232 static const unsigned char charset2lower[256] = { 233 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x 233 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */ 234 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x 234 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */ 235 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x 235 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */ 236 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x 236 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */ 237 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x 237 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */ 238 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x 238 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */ 239 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x 239 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */ 240 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x 240 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */ 241 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x 241 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x40-0x47 */ 242 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x 242 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x48-0x4f */ 243 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x 243 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x50-0x57 */ 244 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x 244 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */ 245 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x 245 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x60-0x67 */ 246 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x 246 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x68-0x6f */ 247 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x 247 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x70-0x77 */ 248 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x 248 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */ 249 249 250 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x 250 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x80-0x87 */ 251 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x 251 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x88-0x8f */ 252 0xa8, 0xa9, 0xab, 0xac, 0xad, 0xae, 0x 252 0xa8, 0xa9, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xe0, /* 0x90-0x97 */ 253 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x 253 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x98-0x9f */ 254 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x 254 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */ 255 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0x 255 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */ 256 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x 256 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 257 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x 257 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */ 258 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x 258 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */ 259 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x 259 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */ 260 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x 260 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */ 261 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x 261 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */ 262 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x 262 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */ 263 0xe8, 0xe9, 0xe1, 0xe2, 0xe3, 0xe5, 0x 263 0xe8, 0xe9, 0xe1, 0xe2, 0xe3, 0xe5, 0xe6, 0xe7, /* 0xe8-0xef */ 264 0xe9, 0xf1, 0xf2, 0xf3, 0xe4, 0xe8, 0x 264 0xe9, 0xf1, 0xf2, 0xf3, 0xe4, 0xe8, 0xf6, 0xf7, /* 0xf0-0xf7 */ 265 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x 265 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0xf8-0xff */ 266 }; 266 }; 267 267 268 static const unsigned char charset2upper[256] 268 static const unsigned char charset2upper[256] = { 269 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x 269 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */ 270 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x 270 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */ 271 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x 271 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */ 272 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x 272 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */ 273 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x 273 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */ 274 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x 274 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */ 275 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x 275 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */ 276 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x 276 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */ 277 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x 277 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x40-0x47 */ 278 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x 278 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x48-0x4f */ 279 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x 279 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x50-0x57 */ 280 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x 280 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */ 281 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x 281 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x60-0x67 */ 282 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x 282 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x68-0x6f */ 283 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x 283 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x70-0x77 */ 284 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x 284 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */ 285 285 286 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x 286 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x80-0x87 */ 287 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x 287 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */ 288 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x 288 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x90-0x97 */ 289 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x 289 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x98-0x9f */ 290 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x 290 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, /* 0xa0-0xa7 */ 291 0x90, 0x91, 0x91, 0x92, 0x93, 0x94, 0x 291 0x90, 0x91, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0xa8-0xaf */ 292 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x 292 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 293 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x 293 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */ 294 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x 294 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */ 295 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x 295 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */ 296 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x 296 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */ 297 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x 297 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */ 298 0x97, 0xea, 0xeb, 0xec, 0xf4, 0xed, 0x 298 0x97, 0xea, 0xeb, 0xec, 0xf4, 0xed, 0xee, 0xef, /* 0xe0-0xe7 */ 299 0xf5, 0xf0, 0xea, 0xeb, 0xec, 0xed, 0x 299 0xf5, 0xf0, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */ 300 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x 300 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */ 301 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x 301 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0xf8-0xff */ 302 }; 302 }; 303 303 304 static int uni2char(wchar_t uni, unsigned char 304 static int uni2char(wchar_t uni, unsigned char *out, int boundlen) 305 { 305 { 306 const unsigned char *uni2charset; 306 const unsigned char *uni2charset; 307 unsigned char cl = uni & 0x00ff; 307 unsigned char cl = uni & 0x00ff; 308 unsigned char ch = (uni & 0xff00) >> 8 308 unsigned char ch = (uni & 0xff00) >> 8; 309 309 310 if (boundlen <= 0) 310 if (boundlen <= 0) 311 return -ENAMETOOLONG; 311 return -ENAMETOOLONG; 312 312 313 uni2charset = page_uni2charset[ch]; 313 uni2charset = page_uni2charset[ch]; 314 if (uni2charset && uni2charset[cl]) 314 if (uni2charset && uni2charset[cl]) 315 out[0] = uni2charset[cl]; 315 out[0] = uni2charset[cl]; 316 else 316 else 317 return -EINVAL; 317 return -EINVAL; 318 return 1; 318 return 1; 319 } 319 } 320 320 321 static int char2uni(const unsigned char *rawst 321 static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni) 322 { 322 { 323 *uni = charset2uni[*rawstring]; 323 *uni = charset2uni[*rawstring]; 324 if (*uni == 0x0000) 324 if (*uni == 0x0000) 325 return -EINVAL; 325 return -EINVAL; 326 return 1; 326 return 1; 327 } 327 } 328 328 329 static struct nls_table table = { 329 static struct nls_table table = { 330 .charset = "cp737", 330 .charset = "cp737", 331 .uni2char = uni2char, 331 .uni2char = uni2char, 332 .char2uni = char2uni, 332 .char2uni = char2uni, 333 .charset2lower = charset2lower, 333 .charset2lower = charset2lower, 334 .charset2upper = charset2upper, 334 .charset2upper = charset2upper, >> 335 .owner = THIS_MODULE, 335 }; 336 }; 336 337 337 static int __init init_nls_cp737(void) 338 static int __init init_nls_cp737(void) 338 { 339 { 339 return register_nls(&table); 340 return register_nls(&table); 340 } 341 } 341 342 342 static void __exit exit_nls_cp737(void) 343 static void __exit exit_nls_cp737(void) 343 { 344 { 344 unregister_nls(&table); 345 unregister_nls(&table); 345 } 346 } 346 347 347 module_init(init_nls_cp737) 348 module_init(init_nls_cp737) 348 module_exit(exit_nls_cp737) 349 module_exit(exit_nls_cp737) 349 350 350 MODULE_DESCRIPTION("NLS Codepage 737 (Greek)") << 351 MODULE_LICENSE("Dual BSD/GPL"); 351 MODULE_LICENSE("Dual BSD/GPL"); 352 352
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.