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

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


  1 /*                                                  1 /*
  2  * linux/fs/nls/nls_cp861.c                         2  * linux/fs/nls/nls_cp861.c
  3  *                                                  3  *
  4  * Charset cp861 translation tables.                4  * Charset cp861 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         0x00e4, 0x00e0, 0x00e5, 0x00e7,            59         0x00e4, 0x00e0, 0x00e5, 0x00e7,
 60         0x00ea, 0x00eb, 0x00e8, 0x00d0,            60         0x00ea, 0x00eb, 0x00e8, 0x00d0,
 61         0x00f0, 0x00de, 0x00c4, 0x00c5,            61         0x00f0, 0x00de, 0x00c4, 0x00c5,
 62         /* 0x90*/                                  62         /* 0x90*/
 63         0x00c9, 0x00e6, 0x00c6, 0x00f4,            63         0x00c9, 0x00e6, 0x00c6, 0x00f4,
 64         0x00f6, 0x00fe, 0x00fb, 0x00dd,            64         0x00f6, 0x00fe, 0x00fb, 0x00dd,
 65         0x00fd, 0x00d6, 0x00dc, 0x00f8,            65         0x00fd, 0x00d6, 0x00dc, 0x00f8,
 66         0x00a3, 0x00d8, 0x20a7, 0x0192,            66         0x00a3, 0x00d8, 0x20a7, 0x0192,
 67         /* 0xa0*/                                  67         /* 0xa0*/
 68         0x00e1, 0x00ed, 0x00f3, 0x00fa,            68         0x00e1, 0x00ed, 0x00f3, 0x00fa,
 69         0x00c1, 0x00cd, 0x00d3, 0x00da,            69         0x00c1, 0x00cd, 0x00d3, 0x00da,
 70         0x00bf, 0x2310, 0x00ac, 0x00bd,            70         0x00bf, 0x2310, 0x00ac, 0x00bd,
 71         0x00bc, 0x00a1, 0x00ab, 0x00bb,            71         0x00bc, 0x00a1, 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, 0xad, 0x00, 0x9c, 0x00, 0x00, 0x    121         0xff, 0xad, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
122         0x00, 0x00, 0x00, 0xae, 0xaa, 0x00, 0x    122         0x00, 0x00, 0x00, 0xae, 0xaa, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
123         0xf8, 0xf1, 0xfd, 0x00, 0x00, 0xe6, 0x    123         0xf8, 0xf1, 0xfd, 0x00, 0x00, 0xe6, 0x00, 0xfa, /* 0xb0-0xb7 */
124         0x00, 0x00, 0x00, 0xaf, 0xac, 0xab, 0x    124         0x00, 0x00, 0x00, 0xaf, 0xac, 0xab, 0x00, 0xa8, /* 0xb8-0xbf */
125         0x00, 0xa4, 0x00, 0x00, 0x8e, 0x8f, 0x    125         0x00, 0xa4, 0x00, 0x00, 0x8e, 0x8f, 0x92, 0x80, /* 0xc0-0xc7 */
126         0x00, 0x90, 0x00, 0x00, 0x00, 0xa5, 0x    126         0x00, 0x90, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, /* 0xc8-0xcf */
127         0x8b, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x    127         0x8b, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x99, 0x00, /* 0xd0-0xd7 */
128         0x9d, 0x00, 0xa7, 0x00, 0x9a, 0x97, 0x    128         0x9d, 0x00, 0xa7, 0x00, 0x9a, 0x97, 0x8d, 0xe1, /* 0xd8-0xdf */
129         0x85, 0xa0, 0x83, 0x00, 0x84, 0x86, 0x    129         0x85, 0xa0, 0x83, 0x00, 0x84, 0x86, 0x91, 0x87, /* 0xe0-0xe7 */
130         0x8a, 0x82, 0x88, 0x89, 0x00, 0xa1, 0x    130         0x8a, 0x82, 0x88, 0x89, 0x00, 0xa1, 0x00, 0x00, /* 0xe8-0xef */
131         0x8c, 0x00, 0x00, 0xa2, 0x93, 0x00, 0x    131         0x8c, 0x00, 0x00, 0xa2, 0x93, 0x00, 0x94, 0xf6, /* 0xf0-0xf7 */
132         0x9b, 0x00, 0xa3, 0x96, 0x81, 0x98, 0x    132         0x9b, 0x00, 0xa3, 0x96, 0x81, 0x98, 0x95, 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, 0x00, /* 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         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    205         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
206         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    206         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
207         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    207         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
208         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    208         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
209         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    209         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xa0-0xa7 */
210 };                                                210 };
211                                                   211 
212 static const unsigned char page22[256] = {        212 static const unsigned char page22[256] = {
213         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    213         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
214         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    214         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
215         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    215         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
216         0x00, 0xf9, 0xfb, 0x00, 0x00, 0x00, 0x    216         0x00, 0xf9, 0xfb, 0x00, 0x00, 0x00, 0xec, 0x00, /* 0x18-0x1f */
217         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    217         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
218         0x00, 0xef, 0x00, 0x00, 0x00, 0x00, 0x    218         0x00, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
219         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    219         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
220         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    220         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
221         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    221         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
222         0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    222         0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
223         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    223         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
224         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    224         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
225         0x00, 0xf0, 0x00, 0x00, 0xf3, 0xf2, 0x    225         0x00, 0xf0, 0x00, 0x00, 0xf3, 0xf2, 0x00, 0x00, /* 0x60-0x67 */
226 };                                                226 };
227                                                   227 
228 static const unsigned char page23[256] = {        228 static const unsigned char page23[256] = {
229         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    229         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
230         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    230         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
231         0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    231         0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
232         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    232         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
233         0xf4, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x    233         0xf4, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
234 };                                                234 };
235                                                   235 
236 static const unsigned char page25[256] = {        236 static const unsigned char page25[256] = {
237         0xc4, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x    237         0xc4, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
238         0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x    238         0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, /* 0x08-0x0f */
239         0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x    239         0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, /* 0x10-0x17 */
240         0xd9, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x    240         0xd9, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, /* 0x18-0x1f */
241         0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x    241         0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0x20-0x27 */
242         0x00, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x    242         0x00, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, /* 0x28-0x2f */
243         0x00, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x    243         0x00, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, /* 0x30-0x37 */
244         0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x    244         0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, /* 0x38-0x3f */
245         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    245         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
246         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    246         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
247         0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0x    247         0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0xb7, 0xbb, /* 0x50-0x57 */
248         0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0x    248         0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0xc6, 0xc7, /* 0x58-0x5f */
249         0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0x    249         0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0xcb, 0xcf, /* 0x60-0x67 */
250         0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x00, 0x    250         0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x00, 0x00, 0x00, /* 0x68-0x6f */
251         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    251         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
252         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    252         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
253                                                   253 
254         0xdf, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x    254         0xdf, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, /* 0x80-0x87 */
255         0xdb, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x    255         0xdb, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, /* 0x88-0x8f */
256         0xde, 0xb0, 0xb1, 0xb2, 0x00, 0x00, 0x    256         0xde, 0xb0, 0xb1, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
257         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    257         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
258         0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    258         0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
259 };                                                259 };
260                                                   260 
261 static const unsigned char *const page_uni2cha    261 static const unsigned char *const page_uni2charset[256] = {
262         page00, page01, NULL,   page03, NULL,     262         page00, page01, NULL,   page03, 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         page20, NULL,   page22, page23, NULL,     266         page20, NULL,   page22, page23, NULL,   page25, NULL,   NULL,   
267 };                                                267 };
268                                                   268 
269 static const unsigned char charset2lower[256]     269 static const unsigned char charset2lower[256] = {
270         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x    270         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */
271         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x    271         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
272         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x    272         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */
273         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x    273         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
274         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x    274         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */
275         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x    275         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */
276         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x    276         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */
277         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x    277         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */
278         0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x    278         0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x40-0x47 */
279         0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x    279         0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x48-0x4f */
280         0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x    280         0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x50-0x57 */
281         0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x    281         0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */
282         0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x    282         0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x60-0x67 */
283         0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x    283         0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x68-0x6f */
284         0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x    284         0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x70-0x77 */
285         0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x    285         0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */
286                                                   286 
287         0x87, 0x81, 0x82, 0x83, 0x84, 0x85, 0x    287         0x87, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x80-0x87 */
288         0x88, 0x89, 0x8a, 0x8c, 0x8c, 0x95, 0x    288         0x88, 0x89, 0x8a, 0x8c, 0x8c, 0x95, 0x84, 0x86, /* 0x88-0x8f */
289         0x82, 0x91, 0x91, 0x93, 0x94, 0x95, 0x    289         0x82, 0x91, 0x91, 0x93, 0x94, 0x95, 0x96, 0x98, /* 0x90-0x97 */
290         0x98, 0x94, 0x81, 0x9b, 0x9c, 0x9b, 0x    290         0x98, 0x94, 0x81, 0x9b, 0x9c, 0x9b, 0x9e, 0x9f, /* 0x98-0x9f */
291         0xa0, 0xa1, 0xa2, 0xa3, 0xa0, 0xa1, 0x    291         0xa0, 0xa1, 0xa2, 0xa3, 0xa0, 0xa1, 0xa2, 0xa3, /* 0xa0-0xa7 */
292         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0x    292         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
293         0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x    293         0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
294         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x    294         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */
295         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x    295         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */
296         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x    296         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
297         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x    297         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
298         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x    298         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */
299         0xe0, 0xe1, 0x00, 0xe3, 0xe5, 0xe5, 0x    299         0xe0, 0xe1, 0x00, 0xe3, 0xe5, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
300         0xed, 0x00, 0x00, 0xeb, 0xec, 0xed, 0x    300         0xed, 0x00, 0x00, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
301         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x    301         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
302         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x    302         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0xf8-0xff */
303 };                                                303 };
304                                                   304 
305 static const unsigned char charset2upper[256]     305 static const unsigned char charset2upper[256] = {
306         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x    306         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */
307         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x    307         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
308         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x    308         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */
309         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x    309         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
310         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x    310         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */
311         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x    311         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */
312         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x    312         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */
313         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x    313         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */
314         0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x    314         0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x40-0x47 */
315         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x    315         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x48-0x4f */
316         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x    316         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x50-0x57 */
317         0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x    317         0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */
318         0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x    318         0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x60-0x67 */
319         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x    319         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x68-0x6f */
320         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x    320         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x70-0x77 */
321         0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x    321         0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */
322                                                   322 
323         0x80, 0x9a, 0x90, 0x00, 0x8e, 0x00, 0x    323         0x80, 0x9a, 0x90, 0x00, 0x8e, 0x00, 0x8f, 0x80, /* 0x80-0x87 */
324         0x00, 0x00, 0x00, 0x8b, 0x8b, 0x8d, 0x    324         0x00, 0x00, 0x00, 0x8b, 0x8b, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
325         0x90, 0x92, 0x92, 0x00, 0x99, 0x8d, 0x    325         0x90, 0x92, 0x92, 0x00, 0x99, 0x8d, 0x00, 0x97, /* 0x90-0x97 */
326         0x97, 0x99, 0x9a, 0x9d, 0x9c, 0x9d, 0x    326         0x97, 0x99, 0x9a, 0x9d, 0x9c, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */
327         0xa4, 0xa5, 0xa6, 0xa7, 0xa4, 0xa5, 0x    327         0xa4, 0xa5, 0xa6, 0xa7, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
328         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0x    328         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
329         0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x    329         0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
330         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x    330         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */
331         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x    331         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */
332         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x    332         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
333         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x    333         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
334         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x    334         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */
335         0x00, 0xe1, 0xe2, 0x00, 0xe4, 0xe4, 0x    335         0x00, 0xe1, 0xe2, 0x00, 0xe4, 0xe4, 0x00, 0x00, /* 0xe0-0xe7 */
336         0xe8, 0xe9, 0xea, 0x00, 0xec, 0xe8, 0x    336         0xe8, 0xe9, 0xea, 0x00, 0xec, 0xe8, 0x00, 0xef, /* 0xe8-0xef */
337         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x    337         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
338         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x    338         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0xf8-0xff */
339 };                                                339 };
340                                                   340 
341 static int uni2char(wchar_t uni, unsigned char    341 static int uni2char(wchar_t uni, unsigned char *out, int boundlen)
342 {                                                 342 {
343         const unsigned char *uni2charset;         343         const unsigned char *uni2charset;
344         unsigned char cl = uni & 0x00ff;          344         unsigned char cl = uni & 0x00ff;
345         unsigned char ch = (uni & 0xff00) >> 8    345         unsigned char ch = (uni & 0xff00) >> 8;
346                                                   346 
347         if (boundlen <= 0)                        347         if (boundlen <= 0)
348                 return -ENAMETOOLONG;             348                 return -ENAMETOOLONG;
349                                                   349 
350         uni2charset = page_uni2charset[ch];       350         uni2charset = page_uni2charset[ch];
351         if (uni2charset && uni2charset[cl])       351         if (uni2charset && uni2charset[cl])
352                 out[0] = uni2charset[cl];         352                 out[0] = uni2charset[cl];
353         else                                      353         else
354                 return -EINVAL;                   354                 return -EINVAL;
355         return 1;                                 355         return 1;
356 }                                                 356 }
357                                                   357 
358 static int char2uni(const unsigned char *rawst    358 static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
359 {                                                 359 {
360         *uni = charset2uni[*rawstring];           360         *uni = charset2uni[*rawstring];
361         if (*uni == 0x0000)                       361         if (*uni == 0x0000)
362                 return -EINVAL;                   362                 return -EINVAL;
363         return 1;                                 363         return 1;
364 }                                                 364 }
365                                                   365 
366 static struct nls_table table = {                 366 static struct nls_table table = {
367         .charset        = "cp861",                367         .charset        = "cp861",
368         .uni2char       = uni2char,               368         .uni2char       = uni2char,
369         .char2uni       = char2uni,               369         .char2uni       = char2uni,
370         .charset2lower  = charset2lower,          370         .charset2lower  = charset2lower,
371         .charset2upper  = charset2upper,          371         .charset2upper  = charset2upper,
372 };                                                372 };
373                                                   373 
374 static int __init init_nls_cp861(void)            374 static int __init init_nls_cp861(void)
375 {                                                 375 {
376         return register_nls(&table);              376         return register_nls(&table);
377 }                                                 377 }
378                                                   378 
379 static void __exit exit_nls_cp861(void)           379 static void __exit exit_nls_cp861(void)
380 {                                                 380 {
381         unregister_nls(&table);                   381         unregister_nls(&table);
382 }                                                 382 }
383                                                   383 
384 module_init(init_nls_cp861)                       384 module_init(init_nls_cp861)
385 module_exit(exit_nls_cp861)                       385 module_exit(exit_nls_cp861)
386                                                   386 
387 MODULE_DESCRIPTION("NLS Codepage 861 (Icelandi    387 MODULE_DESCRIPTION("NLS Codepage 861 (Icelandic)");
388 MODULE_LICENSE("Dual BSD/GPL");                   388 MODULE_LICENSE("Dual BSD/GPL");
389                                                   389 

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