1 /* 1 /* 2 * linux/fs/nls/nls_cp864.c 2 * linux/fs/nls/nls_cp864.c 3 * 3 * 4 * Charset cp864 translation tables. 4 * Charset cp864 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, 0x066a, 0x0026, 0x0027, 29 0x0024, 0x066a, 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 0x00b0, 0x00b7, 0x2219, 0x221a, 58 0x00b0, 0x00b7, 0x2219, 0x221a, 59 0x2592, 0x2500, 0x2502, 0x253c, 59 0x2592, 0x2500, 0x2502, 0x253c, 60 0x2524, 0x252c, 0x251c, 0x2534, 60 0x2524, 0x252c, 0x251c, 0x2534, 61 0x2510, 0x250c, 0x2514, 0x2518, 61 0x2510, 0x250c, 0x2514, 0x2518, 62 /* 0x90*/ 62 /* 0x90*/ 63 0x03b2, 0x221e, 0x03c6, 0x00b1, 63 0x03b2, 0x221e, 0x03c6, 0x00b1, 64 0x00bd, 0x00bc, 0x2248, 0x00ab, 64 0x00bd, 0x00bc, 0x2248, 0x00ab, 65 0x00bb, 0xfef7, 0xfef8, 0x0000, 65 0x00bb, 0xfef7, 0xfef8, 0x0000, 66 0x0000, 0xfefb, 0xfefc, 0x0000, 66 0x0000, 0xfefb, 0xfefc, 0x0000, 67 /* 0xa0*/ 67 /* 0xa0*/ 68 0x00a0, 0x00ad, 0xfe82, 0x00a3, 68 0x00a0, 0x00ad, 0xfe82, 0x00a3, 69 0x00a4, 0xfe84, 0x0000, 0x0000, 69 0x00a4, 0xfe84, 0x0000, 0x0000, 70 0xfe8e, 0xfe8f, 0xfe95, 0xfe99, 70 0xfe8e, 0xfe8f, 0xfe95, 0xfe99, 71 0x060c, 0xfe9d, 0xfea1, 0xfea5, 71 0x060c, 0xfe9d, 0xfea1, 0xfea5, 72 /* 0xb0*/ 72 /* 0xb0*/ 73 0x0660, 0x0661, 0x0662, 0x0663, 73 0x0660, 0x0661, 0x0662, 0x0663, 74 0x0664, 0x0665, 0x0666, 0x0667, 74 0x0664, 0x0665, 0x0666, 0x0667, 75 0x0668, 0x0669, 0xfed1, 0x061b, 75 0x0668, 0x0669, 0xfed1, 0x061b, 76 0xfeb1, 0xfeb5, 0xfeb9, 0x061f, 76 0xfeb1, 0xfeb5, 0xfeb9, 0x061f, 77 /* 0xc0*/ 77 /* 0xc0*/ 78 0x00a2, 0xfe80, 0xfe81, 0xfe83, 78 0x00a2, 0xfe80, 0xfe81, 0xfe83, 79 0xfe85, 0xfeca, 0xfe8b, 0xfe8d, 79 0xfe85, 0xfeca, 0xfe8b, 0xfe8d, 80 0xfe91, 0xfe93, 0xfe97, 0xfe9b, 80 0xfe91, 0xfe93, 0xfe97, 0xfe9b, 81 0xfe9f, 0xfea3, 0xfea7, 0xfea9, 81 0xfe9f, 0xfea3, 0xfea7, 0xfea9, 82 /* 0xd0*/ 82 /* 0xd0*/ 83 0xfeab, 0xfead, 0xfeaf, 0xfeb3, 83 0xfeab, 0xfead, 0xfeaf, 0xfeb3, 84 0xfeb7, 0xfebb, 0xfebf, 0xfec1, 84 0xfeb7, 0xfebb, 0xfebf, 0xfec1, 85 0xfec5, 0xfecb, 0xfecf, 0x00a6, 85 0xfec5, 0xfecb, 0xfecf, 0x00a6, 86 0x00ac, 0x00f7, 0x00d7, 0xfec9, 86 0x00ac, 0x00f7, 0x00d7, 0xfec9, 87 /* 0xe0*/ 87 /* 0xe0*/ 88 0x0640, 0xfed3, 0xfed7, 0xfedb, 88 0x0640, 0xfed3, 0xfed7, 0xfedb, 89 0xfedf, 0xfee3, 0xfee7, 0xfeeb, 89 0xfedf, 0xfee3, 0xfee7, 0xfeeb, 90 0xfeed, 0xfeef, 0xfef3, 0xfebd, 90 0xfeed, 0xfeef, 0xfef3, 0xfebd, 91 0xfecc, 0xfece, 0xfecd, 0xfee1, 91 0xfecc, 0xfece, 0xfecd, 0xfee1, 92 /* 0xf0*/ 92 /* 0xf0*/ 93 0xfe7d, 0x0651, 0xfee5, 0xfee9, 93 0xfe7d, 0x0651, 0xfee5, 0xfee9, 94 0xfeec, 0xfef0, 0xfef2, 0xfed0, 94 0xfeec, 0xfef0, 0xfef2, 0xfed0, 95 0xfed5, 0xfef5, 0xfef6, 0xfedd, 95 0xfed5, 0xfef5, 0xfef6, 0xfedd, 96 0xfed9, 0xfef1, 0x25a0, 0x0000, 96 0xfed9, 0xfef1, 0x25a0, 0x0000, 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, 0x00, 0x 104 0x20, 0x21, 0x22, 0x23, 0x24, 0x00, 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 0xa0, 0x00, 0xc0, 0xa3, 0xa4, 0x00, 0x 121 0xa0, 0x00, 0xc0, 0xa3, 0xa4, 0x00, 0xdb, 0x00, /* 0xa0-0xa7 */ 122 0x00, 0x00, 0x00, 0x97, 0xdc, 0xa1, 0x 122 0x00, 0x00, 0x00, 0x97, 0xdc, 0xa1, 0x00, 0x00, /* 0xa8-0xaf */ 123 0x80, 0x93, 0x00, 0x00, 0x00, 0x00, 0x 123 0x80, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, /* 0xb0-0xb7 */ 124 0x00, 0x00, 0x00, 0x98, 0x95, 0x94, 0x 124 0x00, 0x00, 0x00, 0x98, 0x95, 0x94, 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, 0xde, /* 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, 0xdd, /* 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, 0x00, 0x00, /* 0x80-0x87 */ 153 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 153 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 154 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 154 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 155 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 155 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 156 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 156 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 157 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 157 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ 158 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x 158 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ 159 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 159 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 160 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 160 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, /* 0xc0-0xc7 */ 161 }; 161 }; 162 162 163 static const unsigned char page06[256] = { 163 static const unsigned char page06[256] = { 164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 165 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x 165 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 167 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x 167 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */ 168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 169 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 169 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 170 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 170 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 171 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 171 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 172 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 172 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 174 0x00, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x 174 0x00, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 175 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 175 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 176 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x 176 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x60-0x67 */ 177 0xb8, 0xb9, 0x25, 0x00, 0x00, 0x00, 0x 177 0xb8, 0xb9, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 178 }; 178 }; 179 179 180 static const unsigned char page22[256] = { 180 static const unsigned char page22[256] = { 181 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 181 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 182 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 182 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 183 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 183 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 184 0x00, 0x82, 0x83, 0x00, 0x00, 0x00, 0x 184 0x00, 0x82, 0x83, 0x00, 0x00, 0x00, 0x91, 0x00, /* 0x18-0x1f */ 185 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 185 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 187 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 187 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 189 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 189 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 190 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 190 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 191 }; 191 }; 192 192 193 static const unsigned char page25[256] = { 193 static const unsigned char page25[256] = { 194 0x85, 0x00, 0x86, 0x00, 0x00, 0x00, 0x 194 0x85, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 195 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x 195 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 196 0x8c, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x 196 0x8c, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 197 0x8f, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x 197 0x8f, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 198 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x 198 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 199 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x 199 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 200 0x00, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x 200 0x00, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 201 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x 201 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 202 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 202 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 203 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 203 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 204 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 204 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 205 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 205 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 206 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 206 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 210 210 211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 212 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 212 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 213 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x 213 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 215 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 215 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 216 }; 216 }; 217 217 218 static const unsigned char pagefe[256] = { 218 static const unsigned char pagefe[256] = { 219 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 219 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 220 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 220 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 221 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 221 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 222 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 222 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 225 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 225 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 226 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 226 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 227 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 227 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 228 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 228 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 229 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 229 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 231 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 231 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 232 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 232 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 233 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 233 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 234 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x 234 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, /* 0x78-0x7f */ 235 235 236 0xc1, 0xc2, 0xa2, 0xc3, 0xa5, 0xc4, 0x 236 0xc1, 0xc2, 0xa2, 0xc3, 0xa5, 0xc4, 0x00, 0x00, /* 0x80-0x87 */ 237 0x00, 0x00, 0x00, 0xc6, 0x00, 0xc7, 0x 237 0x00, 0x00, 0x00, 0xc6, 0x00, 0xc7, 0xa8, 0xa9, /* 0x88-0x8f */ 238 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xaa, 0x 238 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xaa, 0x00, 0xca, /* 0x90-0x97 */ 239 0x00, 0xab, 0x00, 0xcb, 0x00, 0xad, 0x 239 0x00, 0xab, 0x00, 0xcb, 0x00, 0xad, 0x00, 0xcc, /* 0x98-0x9f */ 240 0x00, 0xae, 0x00, 0xcd, 0x00, 0xaf, 0x 240 0x00, 0xae, 0x00, 0xcd, 0x00, 0xaf, 0x00, 0xce, /* 0xa0-0xa7 */ 241 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd1, 0x 241 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xd2, /* 0xa8-0xaf */ 242 0x00, 0xbc, 0x00, 0xd3, 0x00, 0xbd, 0x 242 0x00, 0xbc, 0x00, 0xd3, 0x00, 0xbd, 0x00, 0xd4, /* 0xb0-0xb7 */ 243 0x00, 0xbe, 0x00, 0xd5, 0x00, 0xeb, 0x 243 0x00, 0xbe, 0x00, 0xd5, 0x00, 0xeb, 0x00, 0xd6, /* 0xb8-0xbf */ 244 0x00, 0xd7, 0x00, 0x00, 0x00, 0xd8, 0x 244 0x00, 0xd7, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, /* 0xc0-0xc7 */ 245 0x00, 0xdf, 0xc5, 0xd9, 0xec, 0xee, 0x 245 0x00, 0xdf, 0xc5, 0xd9, 0xec, 0xee, 0xed, 0xda, /* 0xc8-0xcf */ 246 0xf7, 0xba, 0x00, 0xe1, 0x00, 0xf8, 0x 246 0xf7, 0xba, 0x00, 0xe1, 0x00, 0xf8, 0x00, 0xe2, /* 0xd0-0xd7 */ 247 0x00, 0xfc, 0x00, 0xe3, 0x00, 0xfb, 0x 247 0x00, 0xfc, 0x00, 0xe3, 0x00, 0xfb, 0x00, 0xe4, /* 0xd8-0xdf */ 248 0x00, 0xef, 0x00, 0xe5, 0x00, 0xf2, 0x 248 0x00, 0xef, 0x00, 0xe5, 0x00, 0xf2, 0x00, 0xe6, /* 0xe0-0xe7 */ 249 0x00, 0xf3, 0x00, 0xe7, 0xf4, 0xe8, 0x 249 0x00, 0xf3, 0x00, 0xe7, 0xf4, 0xe8, 0x00, 0xe9, /* 0xe8-0xef */ 250 0xf5, 0xfd, 0xf6, 0xea, 0x00, 0xf9, 0x 250 0xf5, 0xfd, 0xf6, 0xea, 0x00, 0xf9, 0xfa, 0x99, /* 0xf0-0xf7 */ 251 0x9a, 0x00, 0x00, 0x9d, 0x9e, 0x00, 0x 251 0x9a, 0x00, 0x00, 0x9d, 0x9e, 0x00, 0x00, 0x00, /* 0xf8-0xff */ 252 }; 252 }; 253 253 254 static const unsigned char *const page_uni2cha 254 static const unsigned char *const page_uni2charset[256] = { 255 page00, NULL, NULL, page03, NULL, 255 page00, NULL, NULL, page03, NULL, NULL, page06, NULL, 256 NULL, NULL, NULL, NULL, NULL, 256 NULL, NULL, NULL, NULL, 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, page22, NULL, NULL, 259 NULL, NULL, page22, NULL, NULL, page25, NULL, NULL, 260 NULL, NULL, NULL, NULL, NULL, 260 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 261 NULL, NULL, NULL, NULL, NULL, 261 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 262 NULL, NULL, NULL, NULL, NULL, 262 NULL, NULL, NULL, NULL, 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 NULL, NULL, NULL, NULL, NULL, 266 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 267 NULL, NULL, NULL, NULL, NULL, 267 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 268 NULL, NULL, NULL, NULL, NULL, 268 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 269 NULL, NULL, NULL, NULL, NULL, 269 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 270 NULL, NULL, NULL, NULL, NULL, 270 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 271 NULL, NULL, NULL, NULL, NULL, 271 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 272 NULL, NULL, NULL, NULL, NULL, 272 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 273 NULL, NULL, NULL, NULL, NULL, 273 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 274 NULL, NULL, NULL, NULL, NULL, 274 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 275 NULL, NULL, NULL, NULL, NULL, 275 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 276 NULL, NULL, NULL, NULL, NULL, 276 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 277 NULL, NULL, NULL, NULL, NULL, 277 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 278 NULL, NULL, NULL, NULL, NULL, 278 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 279 NULL, NULL, NULL, NULL, NULL, 279 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 280 NULL, NULL, NULL, NULL, NULL, 280 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 281 NULL, NULL, NULL, NULL, NULL, 281 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 282 NULL, NULL, NULL, NULL, NULL, 282 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 283 NULL, NULL, NULL, NULL, NULL, 283 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 284 NULL, NULL, NULL, NULL, NULL, 284 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 285 NULL, NULL, NULL, NULL, NULL, 285 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 286 NULL, NULL, NULL, NULL, NULL, 286 NULL, NULL, NULL, NULL, NULL, NULL, pagefe, NULL, 287 }; 287 }; 288 288 289 static const unsigned char charset2lower[256] 289 static const unsigned char charset2lower[256] = { 290 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x 290 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */ 291 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x 291 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */ 292 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x 292 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */ 293 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x 293 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */ 294 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x 294 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */ 295 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x 295 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */ 296 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x 296 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */ 297 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x 297 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */ 298 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x 298 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x40-0x47 */ 299 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x 299 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x48-0x4f */ 300 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x 300 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x50-0x57 */ 301 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x 301 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */ 302 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x 302 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x60-0x67 */ 303 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x 303 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x68-0x6f */ 304 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x 304 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x70-0x77 */ 305 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x 305 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */ 306 306 307 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x 307 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x80-0x87 */ 308 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x 308 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */ 309 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x 309 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x90-0x97 */ 310 0x98, 0x99, 0x9a, 0x00, 0x00, 0x9d, 0x 310 0x98, 0x99, 0x9a, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */ 311 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x 311 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00, /* 0xa0-0xa7 */ 312 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0x 312 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */ 313 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x 313 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 314 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x 314 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */ 315 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x 315 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */ 316 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x 316 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */ 317 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x 317 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */ 318 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x 318 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */ 319 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x 319 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */ 320 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x 320 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */ 321 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x 321 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */ 322 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x 322 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xf8-0xff */ 323 }; 323 }; 324 324 325 static const unsigned char charset2upper[256] 325 static const unsigned char charset2upper[256] = { 326 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x 326 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */ 327 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x 327 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */ 328 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x 328 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */ 329 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x 329 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */ 330 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x 330 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */ 331 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x 331 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */ 332 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x 332 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */ 333 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x 333 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */ 334 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x 334 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x40-0x47 */ 335 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x 335 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x48-0x4f */ 336 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x 336 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x50-0x57 */ 337 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x 337 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */ 338 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x 338 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x60-0x67 */ 339 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x 339 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x68-0x6f */ 340 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x 340 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x70-0x77 */ 341 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x 341 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */ 342 342 343 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x 343 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x80-0x87 */ 344 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x 344 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */ 345 0x00, 0x91, 0x00, 0x93, 0x94, 0x95, 0x 345 0x00, 0x91, 0x00, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x90-0x97 */ 346 0x98, 0x99, 0x9a, 0x00, 0x00, 0x9d, 0x 346 0x98, 0x99, 0x9a, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */ 347 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x 347 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00, /* 0xa0-0xa7 */ 348 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0x 348 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */ 349 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x 349 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 350 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x 350 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */ 351 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x 351 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */ 352 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x 352 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */ 353 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x 353 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */ 354 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x 354 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */ 355 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x 355 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */ 356 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x 356 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */ 357 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x 357 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */ 358 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x 358 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xf8-0xff */ 359 }; 359 }; 360 360 361 static int uni2char(wchar_t uni, unsigned char 361 static int uni2char(wchar_t uni, unsigned char *out, int boundlen) 362 { 362 { 363 const unsigned char *uni2charset; 363 const unsigned char *uni2charset; 364 unsigned char cl = uni & 0x00ff; 364 unsigned char cl = uni & 0x00ff; 365 unsigned char ch = (uni & 0xff00) >> 8 365 unsigned char ch = (uni & 0xff00) >> 8; 366 366 367 if (boundlen <= 0) 367 if (boundlen <= 0) 368 return -ENAMETOOLONG; 368 return -ENAMETOOLONG; 369 369 370 uni2charset = page_uni2charset[ch]; 370 uni2charset = page_uni2charset[ch]; 371 if (uni2charset && uni2charset[cl]) 371 if (uni2charset && uni2charset[cl]) 372 out[0] = uni2charset[cl]; 372 out[0] = uni2charset[cl]; 373 else 373 else 374 return -EINVAL; 374 return -EINVAL; 375 return 1; 375 return 1; 376 } 376 } 377 377 378 static int char2uni(const unsigned char *rawst 378 static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni) 379 { 379 { 380 *uni = charset2uni[*rawstring]; 380 *uni = charset2uni[*rawstring]; 381 if (*uni == 0x0000) 381 if (*uni == 0x0000) 382 return -EINVAL; 382 return -EINVAL; 383 return 1; 383 return 1; 384 } 384 } 385 385 386 static struct nls_table table = { 386 static struct nls_table table = { 387 .charset = "cp864", 387 .charset = "cp864", 388 .uni2char = uni2char, 388 .uni2char = uni2char, 389 .char2uni = char2uni, 389 .char2uni = char2uni, 390 .charset2lower = charset2lower, 390 .charset2lower = charset2lower, 391 .charset2upper = charset2upper, 391 .charset2upper = charset2upper, >> 392 .owner = THIS_MODULE, 392 }; 393 }; 393 394 394 static int __init init_nls_cp864(void) 395 static int __init init_nls_cp864(void) 395 { 396 { 396 return register_nls(&table); 397 return register_nls(&table); 397 } 398 } 398 399 399 static void __exit exit_nls_cp864(void) 400 static void __exit exit_nls_cp864(void) 400 { 401 { 401 unregister_nls(&table); 402 unregister_nls(&table); 402 } 403 } 403 404 404 module_init(init_nls_cp864) 405 module_init(init_nls_cp864) 405 module_exit(exit_nls_cp864) 406 module_exit(exit_nls_cp864) 406 407 407 MODULE_DESCRIPTION("NLS Codepage 864 (Arabic)" << 408 MODULE_LICENSE("Dual BSD/GPL"); 408 MODULE_LICENSE("Dual BSD/GPL"); 409 409
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.