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

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


  1 /*                                                  1 /*
  2  * linux/fs/nls/nls_koi8-r.c                        2  * linux/fs/nls/nls_koi8-r.c
  3  *                                                  3  *
  4  * Charset koi8-r translation tables.               4  * Charset koi8-r 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         0x2500, 0x2502, 0x250c, 0x2510,            58         0x2500, 0x2502, 0x250c, 0x2510,
 59         0x2514, 0x2518, 0x251c, 0x2524,            59         0x2514, 0x2518, 0x251c, 0x2524,
 60         0x252c, 0x2534, 0x253c, 0x2580,            60         0x252c, 0x2534, 0x253c, 0x2580,
 61         0x2584, 0x2588, 0x258c, 0x2590,            61         0x2584, 0x2588, 0x258c, 0x2590,
 62         /* 0x90*/                                  62         /* 0x90*/
 63         0x2591, 0x2592, 0x2593, 0x2320,            63         0x2591, 0x2592, 0x2593, 0x2320,
 64         0x25a0, 0x2219, 0x221a, 0x2248,            64         0x25a0, 0x2219, 0x221a, 0x2248,
 65         0x2264, 0x2265, 0x00a0, 0x2321,            65         0x2264, 0x2265, 0x00a0, 0x2321,
 66         0x00b0, 0x00b2, 0x00b7, 0x00f7,            66         0x00b0, 0x00b2, 0x00b7, 0x00f7,
 67         /* 0xa0*/                                  67         /* 0xa0*/
 68         0x2550, 0x2551, 0x2552, 0x0451,            68         0x2550, 0x2551, 0x2552, 0x0451,
 69         0x2553, 0x2554, 0x2555, 0x2556,            69         0x2553, 0x2554, 0x2555, 0x2556,
 70         0x2557, 0x2558, 0x2559, 0x255a,            70         0x2557, 0x2558, 0x2559, 0x255a,
 71         0x255b, 0x255c, 0x255d, 0x255e,            71         0x255b, 0x255c, 0x255d, 0x255e,
 72         /* 0xb0*/                                  72         /* 0xb0*/
 73         0x255f, 0x2560, 0x2561, 0x0401,            73         0x255f, 0x2560, 0x2561, 0x0401,
 74         0x2562, 0x2563, 0x2564, 0x2565,            74         0x2562, 0x2563, 0x2564, 0x2565,
 75         0x2566, 0x2567, 0x2568, 0x2569,            75         0x2566, 0x2567, 0x2568, 0x2569,
 76         0x256a, 0x256b, 0x256c, 0x00a9,            76         0x256a, 0x256b, 0x256c, 0x00a9,
 77         /* 0xc0*/                                  77         /* 0xc0*/
 78         0x044e, 0x0430, 0x0431, 0x0446,            78         0x044e, 0x0430, 0x0431, 0x0446,
 79         0x0434, 0x0435, 0x0444, 0x0433,            79         0x0434, 0x0435, 0x0444, 0x0433,
 80         0x0445, 0x0438, 0x0439, 0x043a,            80         0x0445, 0x0438, 0x0439, 0x043a,
 81         0x043b, 0x043c, 0x043d, 0x043e,            81         0x043b, 0x043c, 0x043d, 0x043e,
 82         /* 0xd0*/                                  82         /* 0xd0*/
 83         0x043f, 0x044f, 0x0440, 0x0441,            83         0x043f, 0x044f, 0x0440, 0x0441,
 84         0x0442, 0x0443, 0x0436, 0x0432,            84         0x0442, 0x0443, 0x0436, 0x0432,
 85         0x044c, 0x044b, 0x0437, 0x0448,            85         0x044c, 0x044b, 0x0437, 0x0448,
 86         0x044d, 0x0449, 0x0447, 0x044a,            86         0x044d, 0x0449, 0x0447, 0x044a,
 87         /* 0xe0*/                                  87         /* 0xe0*/
 88         0x042e, 0x0410, 0x0411, 0x0426,            88         0x042e, 0x0410, 0x0411, 0x0426,
 89         0x0414, 0x0415, 0x0424, 0x0413,            89         0x0414, 0x0415, 0x0424, 0x0413,
 90         0x0425, 0x0418, 0x0419, 0x041a,            90         0x0425, 0x0418, 0x0419, 0x041a,
 91         0x041b, 0x041c, 0x041d, 0x041e,            91         0x041b, 0x041c, 0x041d, 0x041e,
 92         /* 0xf0*/                                  92         /* 0xf0*/
 93         0x041f, 0x042f, 0x0420, 0x0421,            93         0x041f, 0x042f, 0x0420, 0x0421,
 94         0x0422, 0x0423, 0x0416, 0x0412,            94         0x0422, 0x0423, 0x0416, 0x0412,
 95         0x042c, 0x042b, 0x0417, 0x0428,            95         0x042c, 0x042b, 0x0417, 0x0428,
 96         0x042d, 0x0429, 0x0427, 0x042a,            96         0x042d, 0x0429, 0x0427, 0x042a,
 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         0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    121         0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
122         0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x    122         0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
123         0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x    123         0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 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, 0x9f, /* 0xf0-0xf7 */
132 };                                                132 };
133                                                   133 
134 static const unsigned char page04[256] = {        134 static const unsigned char page04[256] = {
135         0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x    135         0x00, 0xb3, 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         0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0x    137         0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
138         0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0x    138         0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
139         0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0x    139         0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
140         0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0x    140         0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
141         0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0x    141         0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
142         0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0x    142         0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
143         0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0x    143         0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
144         0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0x    144         0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
145         0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x    145         0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
146 };                                                146 };
147                                                   147 
148 static const unsigned char page22[256] = {        148 static const unsigned char page22[256] = {
149         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    149         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
150         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    150         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
151         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    151         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
152         0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x    152         0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
153         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    153         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
154         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    154         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
155         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    155         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
156         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    156         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
157         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    157         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
158         0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    158         0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
159         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    159         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
160         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    160         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
161         0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x    161         0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */
162 };                                                162 };
163                                                   163 
164 static const unsigned char page23[256] = {        164 static const unsigned char page23[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         0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x    169         0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
170 };                                                170 };
171                                                   171 
172 static const unsigned char page25[256] = {        172 static const unsigned char page25[256] = {
173         0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x    173         0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
174         0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x    174         0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */
175         0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x    175         0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */
176         0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x    176         0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */
177         0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x    177         0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */
178         0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x    178         0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */
179         0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x    179         0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */
180         0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x    180         0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */
181         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    181         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
182         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    182         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
183         0xa0, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0x    183         0xa0, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, /* 0x50-0x57 */
184         0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0x    184         0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, /* 0x58-0x5f */
185         0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, 0x    185         0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, /* 0x60-0x67 */
186         0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, 0x    186         0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, 0x00, 0x00, /* 0x68-0x6f */
187         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    187         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
188         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    188         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
189                                                   189 
190         0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x    190         0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */
191         0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x    191         0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */
192         0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x    192         0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
193         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    193         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
194         0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    194         0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
195 };                                                195 };
196                                                   196 
197 static const unsigned char *const page_uni2cha    197 static const unsigned char *const page_uni2charset[256] = {
198         page00, NULL,   NULL,   NULL,   page04    198         page00, NULL,   NULL,   NULL,   page04, NULL,   NULL,   NULL,   
199         NULL,   NULL,   NULL,   NULL,   NULL,     199         NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
200         NULL,   NULL,   NULL,   NULL,   NULL,     200         NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
201         NULL,   NULL,   NULL,   NULL,   NULL,     201         NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
202         NULL,   NULL,   page22, page23, NULL,     202         NULL,   NULL,   page22, page23, NULL,   page25, NULL,   NULL,   
203 };                                                203 };
204                                                   204 
205 static const unsigned char charset2lower[256]     205 static const unsigned char charset2lower[256] = {
206         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x    206         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */
207         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x    207         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
208         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x    208         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */
209         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x    209         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
210         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x    210         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */
211         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x    211         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */
212         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x    212         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */
213         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x    213         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */
214         0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x    214         0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x40-0x47 */
215         0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x    215         0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x48-0x4f */
216         0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x    216         0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x50-0x57 */
217         0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x    217         0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */
218         0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x    218         0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x60-0x67 */
219         0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x    219         0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x68-0x6f */
220         0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x    220         0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x70-0x77 */
221         0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x    221         0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */
222                                                   222 
223         0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x    223         0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x80-0x87 */
224         0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x    224         0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
225         0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x    225         0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x90-0x97 */
226         0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x    226         0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x98-0x9f */
227         0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x    227         0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
228         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0x    228         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
229         0xb0, 0xb1, 0xb2, 0xa3, 0xb4, 0xb5, 0x    229         0xb0, 0xb1, 0xb2, 0xa3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
230         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x    230         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */
231         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x    231         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */
232         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x    232         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
233         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x    233         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
234         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x    234         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */
235         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x    235         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xe0-0xe7 */
236         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x    236         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xe8-0xef */
237         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x    237         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xf0-0xf7 */
238         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x    238         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xf8-0xff */
239 };                                                239 };
240                                                   240 
241 static const unsigned char charset2upper[256]     241 static const unsigned char charset2upper[256] = {
242         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x    242         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */
243         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x    243         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
244         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x    244         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */
245         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x    245         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
246         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x    246         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */
247         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x    247         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */
248         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x    248         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */
249         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x    249         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */
250         0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x    250         0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x40-0x47 */
251         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x    251         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x48-0x4f */
252         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x    252         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x50-0x57 */
253         0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x    253         0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */
254         0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x    254         0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x60-0x67 */
255         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x    255         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x68-0x6f */
256         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x    256         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x70-0x77 */
257         0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x    257         0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */
258                                                   258 
259         0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x    259         0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x80-0x87 */
260         0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x    260         0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
261         0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x    261         0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x90-0x97 */
262         0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x    262         0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x98-0x9f */
263         0xa0, 0xa1, 0xa2, 0xb3, 0xa4, 0xa5, 0x    263         0xa0, 0xa1, 0xa2, 0xb3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
264         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0x    264         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
265         0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x    265         0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
266         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x    266         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */
267         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x    267         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xc0-0xc7 */
268         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x    268         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xc8-0xcf */
269         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x    269         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */
270         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x    270         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0xd8-0xdf */
271         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x    271         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
272         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x    272         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
273         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x    273         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
274         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x    274         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0xf8-0xff */
275 };                                                275 };
276                                                   276 
277 static int uni2char(wchar_t uni, unsigned char    277 static int uni2char(wchar_t uni, unsigned char *out, int boundlen)
278 {                                                 278 {
279         const unsigned char *uni2charset;         279         const unsigned char *uni2charset;
280         unsigned char cl = uni & 0x00ff;          280         unsigned char cl = uni & 0x00ff;
281         unsigned char ch = (uni & 0xff00) >> 8    281         unsigned char ch = (uni & 0xff00) >> 8;
282                                                   282 
283         if (boundlen <= 0)                        283         if (boundlen <= 0)
284                 return -ENAMETOOLONG;             284                 return -ENAMETOOLONG;
285                                                   285 
286         uni2charset = page_uni2charset[ch];       286         uni2charset = page_uni2charset[ch];
287         if (uni2charset && uni2charset[cl])       287         if (uni2charset && uni2charset[cl])
288                 out[0] = uni2charset[cl];         288                 out[0] = uni2charset[cl];
289         else                                      289         else
290                 return -EINVAL;                   290                 return -EINVAL;
291         return 1;                                 291         return 1;
292 }                                                 292 }
293                                                   293 
294 static int char2uni(const unsigned char *rawst    294 static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
295 {                                                 295 {
296         *uni = charset2uni[*rawstring];           296         *uni = charset2uni[*rawstring];
297         if (*uni == 0x0000)                       297         if (*uni == 0x0000)
298                 return -EINVAL;                   298                 return -EINVAL;
299         return 1;                                 299         return 1;
300 }                                                 300 }
301                                                   301 
302 static struct nls_table table = {                 302 static struct nls_table table = {
303         .charset        = "koi8-r",               303         .charset        = "koi8-r",
304         .uni2char       = uni2char,               304         .uni2char       = uni2char,
305         .char2uni       = char2uni,               305         .char2uni       = char2uni,
306         .charset2lower  = charset2lower,          306         .charset2lower  = charset2lower,
307         .charset2upper  = charset2upper,          307         .charset2upper  = charset2upper,
308 };                                                308 };
309                                                   309 
310 static int __init init_nls_koi8_r(void)           310 static int __init init_nls_koi8_r(void)
311 {                                                 311 {
312         return register_nls(&table);              312         return register_nls(&table);
313 }                                                 313 }
314                                                   314 
315 static void __exit exit_nls_koi8_r(void)          315 static void __exit exit_nls_koi8_r(void)
316 {                                                 316 {
317         unregister_nls(&table);                   317         unregister_nls(&table);
318 }                                                 318 }
319                                                   319 
320 module_init(init_nls_koi8_r)                      320 module_init(init_nls_koi8_r)
321 module_exit(exit_nls_koi8_r)                      321 module_exit(exit_nls_koi8_r)
322                                                   322 
323 MODULE_DESCRIPTION("NLS KOI8-R (Russian)");    << 
324 MODULE_LICENSE("Dual BSD/GPL");                   323 MODULE_LICENSE("Dual BSD/GPL");
325                                                   324 

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