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

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


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

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