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

TOMOYO Linux Cross Reference
Linux/fs/nls/nls_cp863.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_cp863.c (Version linux-6.12-rc7) and /fs/nls/nls_cp863.c (Version linux-6.4.16)


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

~ [ 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