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

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


  1 /*                                                  1 /*
  2  * linux/fs/nls/nls_cp1251.c                        2  * linux/fs/nls/nls_cp1251.c
  3  *                                                  3  *
  4  * Charset cp1251 translation tables.               4  * Charset cp1251 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         0x0402, 0x0403, 0x201a, 0x0453,            58         0x0402, 0x0403, 0x201a, 0x0453, 
 59         0x201e, 0x2026, 0x2020, 0x2021,            59         0x201e, 0x2026, 0x2020, 0x2021, 
 60         0x20ac, 0x2030, 0x0409, 0x2039,            60         0x20ac, 0x2030, 0x0409, 0x2039, 
 61         0x040a, 0x040c, 0x040b, 0x040f,            61         0x040a, 0x040c, 0x040b, 0x040f, 
 62         /* 0x90*/                                  62         /* 0x90*/
 63         0x0452, 0x2018, 0x2019, 0x201c,            63         0x0452, 0x2018, 0x2019, 0x201c, 
 64         0x201d, 0x2022, 0x2013, 0x2014,            64         0x201d, 0x2022, 0x2013, 0x2014, 
 65         0x0000, 0x2122, 0x0459, 0x203a,            65         0x0000, 0x2122, 0x0459, 0x203a, 
 66         0x045a, 0x045c, 0x045b, 0x045f,            66         0x045a, 0x045c, 0x045b, 0x045f, 
 67         /* 0xa0*/                                  67         /* 0xa0*/
 68         0x00a0, 0x040e, 0x045e, 0x0408,            68         0x00a0, 0x040e, 0x045e, 0x0408, 
 69         0x00a4, 0x0490, 0x00a6, 0x00a7,            69         0x00a4, 0x0490, 0x00a6, 0x00a7, 
 70         0x0401, 0x00a9, 0x0404, 0x00ab,            70         0x0401, 0x00a9, 0x0404, 0x00ab, 
 71         0x00ac, 0x00ad, 0x00ae, 0x0407,            71         0x00ac, 0x00ad, 0x00ae, 0x0407, 
 72         /* 0xb0*/                                  72         /* 0xb0*/
 73         0x00b0, 0x00b1, 0x0406, 0x0456,            73         0x00b0, 0x00b1, 0x0406, 0x0456, 
 74         0x0491, 0x00b5, 0x00b6, 0x00b7,            74         0x0491, 0x00b5, 0x00b6, 0x00b7, 
 75         0x0451, 0x2116, 0x0454, 0x00bb,            75         0x0451, 0x2116, 0x0454, 0x00bb, 
 76         0x0458, 0x0405, 0x0455, 0x0457,            76         0x0458, 0x0405, 0x0455, 0x0457, 
 77         /* 0xc0*/                                  77         /* 0xc0*/
 78         0x0410, 0x0411, 0x0412, 0x0413,            78         0x0410, 0x0411, 0x0412, 0x0413, 
 79         0x0414, 0x0415, 0x0416, 0x0417,            79         0x0414, 0x0415, 0x0416, 0x0417, 
 80         0x0418, 0x0419, 0x041a, 0x041b,            80         0x0418, 0x0419, 0x041a, 0x041b, 
 81         0x041c, 0x041d, 0x041e, 0x041f,            81         0x041c, 0x041d, 0x041e, 0x041f, 
 82         /* 0xd0*/                                  82         /* 0xd0*/
 83         0x0420, 0x0421, 0x0422, 0x0423,            83         0x0420, 0x0421, 0x0422, 0x0423, 
 84         0x0424, 0x0425, 0x0426, 0x0427,            84         0x0424, 0x0425, 0x0426, 0x0427, 
 85         0x0428, 0x0429, 0x042a, 0x042b,            85         0x0428, 0x0429, 0x042a, 0x042b, 
 86         0x042c, 0x042d, 0x042e, 0x042f,            86         0x042c, 0x042d, 0x042e, 0x042f, 
 87         /* 0xe0*/                                  87         /* 0xe0*/
 88         0x0430, 0x0431, 0x0432, 0x0433,            88         0x0430, 0x0431, 0x0432, 0x0433, 
 89         0x0434, 0x0435, 0x0436, 0x0437,            89         0x0434, 0x0435, 0x0436, 0x0437, 
 90         0x0438, 0x0439, 0x043a, 0x043b,            90         0x0438, 0x0439, 0x043a, 0x043b, 
 91         0x043c, 0x043d, 0x043e, 0x043f,            91         0x043c, 0x043d, 0x043e, 0x043f, 
 92         /* 0xf0*/                                  92         /* 0xf0*/
 93         0x0440, 0x0441, 0x0442, 0x0443,            93         0x0440, 0x0441, 0x0442, 0x0443, 
 94         0x0444, 0x0445, 0x0446, 0x0447,            94         0x0444, 0x0445, 0x0446, 0x0447, 
 95         0x0448, 0x0449, 0x044a, 0x044b,            95         0x0448, 0x0449, 0x044a, 0x044b, 
 96         0x044c, 0x044d, 0x044e, 0x044f,            96         0x044c, 0x044d, 0x044e, 0x044f, 
 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         0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x    121         0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
122         0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0x    122         0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
123         0xb0, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0x    123         0xb0, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
124         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x    124         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
125         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x    125         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
126         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x    126         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
127         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x    127         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
128         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x    128         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
129         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x    129         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
130         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x    130         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
131         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x    131         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
132         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x    132         0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
133 };                                                133 };
134                                                   134 
135 static const unsigned char page04[256] = {        135 static const unsigned char page04[256] = {
136         0x00, 0xa8, 0x80, 0x81, 0xaa, 0xbd, 0x    136         0x00, 0xa8, 0x80, 0x81, 0xaa, 0xbd, 0xb2, 0xaf, /* 0x00-0x07 */
137         0xa3, 0x8a, 0x8c, 0x8e, 0x8d, 0x00, 0x    137         0xa3, 0x8a, 0x8c, 0x8e, 0x8d, 0x00, 0xa1, 0x8f, /* 0x08-0x0f */
138         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x    138         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x10-0x17 */
139         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x    139         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x18-0x1f */
140         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x    140         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x20-0x27 */
141         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x    141         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x28-0x2f */
142         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x    142         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */
143         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x    143         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */
144         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x    144         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */
145         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x    145         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0x48-0x4f */
146         0x00, 0xb8, 0x90, 0x83, 0xba, 0xbe, 0x    146         0x00, 0xb8, 0x90, 0x83, 0xba, 0xbe, 0xb3, 0xbf, /* 0x50-0x57 */
147         0xbc, 0x9a, 0x9c, 0x9e, 0x9d, 0x00, 0x    147         0xbc, 0x9a, 0x9c, 0x9e, 0x9d, 0x00, 0xa2, 0x9f, /* 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, 0xa5, 0xb4, 0x00, 0x00, 0x00, 0x    155         0x00, 0xa5, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
156 };                                                156 };
157                                                   157 
158 static const unsigned char page20[256] = {        158 static const unsigned char page20[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, 0x96, 0x97, 0x00, 0x    161         0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
162         0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x    162         0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
163         0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x    163         0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
164         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    164         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
165         0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    165         0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
166         0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x    166         0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
167 };                                                167 };
168                                                   168 
169 static const unsigned char page21[256] = {        169 static const unsigned char page21[256] = {
170         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    170         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
171         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    171         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
172         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    172         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x00, /* 0x10-0x17 */
173         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    173         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
174         0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x    174         0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
175 };                                                175 };
176                                                   176 
177 static const unsigned char *const page_uni2cha    177 static const unsigned char *const page_uni2charset[256] = {
178         page00, NULL,   NULL,   NULL,   page04    178         page00, NULL,   NULL,   NULL,   page04, NULL,   NULL,   NULL,   
179         NULL,   NULL,   NULL,   NULL,   NULL,     179         NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
180         NULL,   NULL,   NULL,   NULL,   NULL,     180         NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
181         NULL,   NULL,   NULL,   NULL,   NULL,     181         NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
182         page20, page21, NULL,   NULL,   NULL,     182         page20, page21, NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
183 };                                                183 };
184                                                   184 
185 static const unsigned char charset2lower[256]     185 static const unsigned char charset2lower[256] = {
186         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x    186         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */
187         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x    187         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
188         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x    188         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */
189         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x    189         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
190         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x    190         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */
191         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x    191         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */
192         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x    192         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */
193         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x    193         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */
194         0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x    194         0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x40-0x47 */
195         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x    195         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x48-0x4f */
196         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x    196         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x50-0x57 */
197         0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x    197         0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */
198         0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x    198         0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x60-0x67 */
199         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x    199         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x68-0x6f */
200         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x    200         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x70-0x77 */
201         0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x    201         0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */
202         0x90, 0x83, 0x82, 0x83, 0x84, 0x85, 0x    202         0x90, 0x83, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x80-0x87 */
203         0x88, 0x89, 0x9a, 0x8b, 0x9c, 0x9d, 0x    203         0x88, 0x89, 0x9a, 0x8b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x88-0x8f */
204         0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x    204         0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x90-0x97 */
205         0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x    205         0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x98-0x9f */
206         0xa0, 0xa2, 0xa2, 0xbc, 0xa4, 0xb4, 0x    206         0xa0, 0xa2, 0xa2, 0xbc, 0xa4, 0xb4, 0xa6, 0xa7, /* 0xa0-0xa7 */
207         0xb8, 0xa9, 0xba, 0xab, 0xac, 0xad, 0x    207         0xb8, 0xa9, 0xba, 0xab, 0xac, 0xad, 0xae, 0xbf, /* 0xa8-0xaf */
208         0xb0, 0xb1, 0xb3, 0xb3, 0xb4, 0xb5, 0x    208         0xb0, 0xb1, 0xb3, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
209         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbe, 0x    209         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbe, 0xbe, 0xbf, /* 0xb8-0xbf */
210         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x    210         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xc0-0xc7 */
211         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x    211         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xc8-0xcf */
212         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x    212         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */
213         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x    213         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0xd8-0xdf */
214         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x    214         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
215         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x    215         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
216         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x    216         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
217         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x    217         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0xf8-0xff */
218 };                                                218 };
219                                                   219 
220 static const unsigned char charset2upper[256]     220 static const unsigned char charset2upper[256] = {
221         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x    221         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */
222         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x    222         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
223         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x    223         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */
224         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x    224         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
225         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x    225         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */
226         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x    226         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */
227         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x    227         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */
228         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x    228         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */
229         0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x    229         0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x40-0x47 */
230         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x    230         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x48-0x4f */
231         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x    231         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x50-0x57 */
232         0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x    232         0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */
233         0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x    233         0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x60-0x67 */
234         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x    234         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x68-0x6f */
235         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x    235         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x70-0x77 */
236         0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x    236         0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */
237         0x80, 0x81, 0x82, 0x81, 0x84, 0x85, 0x    237         0x80, 0x81, 0x82, 0x81, 0x84, 0x85, 0x86, 0x87, /* 0x80-0x87 */
238         0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x    238         0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
239         0x80, 0x91, 0x92, 0x93, 0x94, 0x95, 0x    239         0x80, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x90-0x97 */
240         0x98, 0x99, 0x8a, 0x9b, 0x8c, 0x8d, 0x    240         0x98, 0x99, 0x8a, 0x9b, 0x8c, 0x8d, 0x8e, 0x8f, /* 0x98-0x9f */
241         0xa0, 0xa1, 0xa1, 0xa3, 0xa4, 0xa5, 0x    241         0xa0, 0xa1, 0xa1, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
242         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0x    242         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
243         0xb0, 0xb1, 0xb2, 0xb2, 0xa5, 0xb5, 0x    243         0xb0, 0xb1, 0xb2, 0xb2, 0xa5, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
244         0xa8, 0xb9, 0xaa, 0xbb, 0xa3, 0xbd, 0x    244         0xa8, 0xb9, 0xaa, 0xbb, 0xa3, 0xbd, 0xbd, 0xaf, /* 0xb8-0xbf */
245         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x    245         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */
246         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x    246         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
247         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x    247         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
248         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x    248         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */
249         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x    249         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xe0-0xe7 */
250         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x    250         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xe8-0xef */
251         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x    251         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xf0-0xf7 */
252         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x    252         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xf8-0xff */
253 };                                                253 };
254                                                   254 
255 static int uni2char(wchar_t uni, unsigned char    255 static int uni2char(wchar_t uni, unsigned char *out, int boundlen)
256 {                                                 256 {
257         const unsigned char *uni2charset;         257         const unsigned char *uni2charset;
258         unsigned char cl = uni & 0x00ff;          258         unsigned char cl = uni & 0x00ff;
259         unsigned char ch = (uni & 0xff00) >> 8    259         unsigned char ch = (uni & 0xff00) >> 8;
260                                                   260 
261         if (boundlen <= 0)                        261         if (boundlen <= 0)
262                 return -ENAMETOOLONG;             262                 return -ENAMETOOLONG;
263                                                   263 
264         uni2charset = page_uni2charset[ch];       264         uni2charset = page_uni2charset[ch];
265         if (uni2charset && uni2charset[cl])       265         if (uni2charset && uni2charset[cl])
266                 out[0] = uni2charset[cl];         266                 out[0] = uni2charset[cl];
267         else                                      267         else
268                 return -EINVAL;                   268                 return -EINVAL;
269         return 1;                                 269         return 1;
270 }                                                 270 }
271                                                   271 
272 static int char2uni(const unsigned char *rawst    272 static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
273 {                                                 273 {
274         *uni = charset2uni[*rawstring];           274         *uni = charset2uni[*rawstring];
275         if (*uni == 0x0000)                       275         if (*uni == 0x0000)
276                 return -EINVAL;                   276                 return -EINVAL;
277         return 1;                                 277         return 1;
278 }                                                 278 }
279                                                   279 
280 static struct nls_table table = {                 280 static struct nls_table table = {
281         .charset        = "cp1251",               281         .charset        = "cp1251",
282         .uni2char       = uni2char,               282         .uni2char       = uni2char,
283         .char2uni       = char2uni,               283         .char2uni       = char2uni,
284         .charset2lower  = charset2lower,          284         .charset2lower  = charset2lower,
285         .charset2upper  = charset2upper,          285         .charset2upper  = charset2upper,
286 };                                                286 };
287                                                   287 
288 static int __init init_nls_cp1251(void)           288 static int __init init_nls_cp1251(void)
289 {                                                 289 {
290         return register_nls(&table);              290         return register_nls(&table);
291 }                                                 291 }
292                                                   292 
293 static void __exit exit_nls_cp1251(void)          293 static void __exit exit_nls_cp1251(void)
294 {                                                 294 {
295         unregister_nls(&table);                   295         unregister_nls(&table);
296 }                                                 296 }
297                                                   297 
298 module_init(init_nls_cp1251)                      298 module_init(init_nls_cp1251)
299 module_exit(exit_nls_cp1251)                      299 module_exit(exit_nls_cp1251)
300                                                   300 
301 MODULE_DESCRIPTION("NLS Windows CP1251 (Bulgar << 
302 MODULE_LICENSE("Dual BSD/GPL");                   301 MODULE_LICENSE("Dual BSD/GPL");
303                                                   302 

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