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

TOMOYO Linux Cross Reference
Linux/fs/nls/nls_koi8-u.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_koi8-u.c (Version linux-6.12-rc7) and /fs/nls/nls_koi8-u.c (Version linux-4.18.20)


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

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