~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/fs/nls/nls_cp864.c

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /fs/nls/nls_cp864.c (Version linux-6.12-rc7) and /fs/nls/nls_cp864.c (Version linux-6.10.14)


  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 };                                                392 };
393                                                   393 
394 static int __init init_nls_cp864(void)            394 static int __init init_nls_cp864(void)
395 {                                                 395 {
396         return register_nls(&table);              396         return register_nls(&table);
397 }                                                 397 }
398                                                   398 
399 static void __exit exit_nls_cp864(void)           399 static void __exit exit_nls_cp864(void)
400 {                                                 400 {
401         unregister_nls(&table);                   401         unregister_nls(&table);
402 }                                                 402 }
403                                                   403 
404 module_init(init_nls_cp864)                       404 module_init(init_nls_cp864)
405 module_exit(exit_nls_cp864)                       405 module_exit(exit_nls_cp864)
406                                                   406 
407 MODULE_DESCRIPTION("NLS Codepage 864 (Arabic)" << 
408 MODULE_LICENSE("Dual BSD/GPL");                   407 MODULE_LICENSE("Dual BSD/GPL");
409                                                   408 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php