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

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


  1 /*                                                  1 /*
  2  * linux/fs/nls/nls_cp874.c                         2  * linux/fs/nls/nls_cp874.c
  3  *                                                  3  *
  4  * Charset cp874 translation tables.                4  * Charset cp874 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         0x0000, 0x0000, 0x0000, 0x0000,            58         0x0000, 0x0000, 0x0000, 0x0000,
 59         0x0000, 0x2026, 0x0000, 0x0000,            59         0x0000, 0x2026, 0x0000, 0x0000,
 60         0x0000, 0x0000, 0x0000, 0x0000,            60         0x0000, 0x0000, 0x0000, 0x0000,
 61         0x0000, 0x0000, 0x0000, 0x0000,            61         0x0000, 0x0000, 0x0000, 0x0000,
 62         /* 0x90*/                                  62         /* 0x90*/
 63         0x0000, 0x2018, 0x2019, 0x201c,            63         0x0000, 0x2018, 0x2019, 0x201c,
 64         0x201d, 0x2022, 0x2013, 0x2014,            64         0x201d, 0x2022, 0x2013, 0x2014,
 65         0x0000, 0x0000, 0x0000, 0x0000,            65         0x0000, 0x0000, 0x0000, 0x0000,
 66         0x0000, 0x0000, 0x0000, 0x0000,            66         0x0000, 0x0000, 0x0000, 0x0000,
 67         /* 0xa0*/                                  67         /* 0xa0*/
 68         0x00a0, 0x0e01, 0x0e02, 0x0e03,            68         0x00a0, 0x0e01, 0x0e02, 0x0e03,
 69         0x0e04, 0x0e05, 0x0e06, 0x0e07,            69         0x0e04, 0x0e05, 0x0e06, 0x0e07,
 70         0x0e08, 0x0e09, 0x0e0a, 0x0e0b,            70         0x0e08, 0x0e09, 0x0e0a, 0x0e0b,
 71         0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,            71         0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
 72         /* 0xb0*/                                  72         /* 0xb0*/
 73         0x0e10, 0x0e11, 0x0e12, 0x0e13,            73         0x0e10, 0x0e11, 0x0e12, 0x0e13,
 74         0x0e14, 0x0e15, 0x0e16, 0x0e17,            74         0x0e14, 0x0e15, 0x0e16, 0x0e17,
 75         0x0e18, 0x0e19, 0x0e1a, 0x0e1b,            75         0x0e18, 0x0e19, 0x0e1a, 0x0e1b,
 76         0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,            76         0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
 77         /* 0xc0*/                                  77         /* 0xc0*/
 78         0x0e20, 0x0e21, 0x0e22, 0x0e23,            78         0x0e20, 0x0e21, 0x0e22, 0x0e23,
 79         0x0e24, 0x0e25, 0x0e26, 0x0e27,            79         0x0e24, 0x0e25, 0x0e26, 0x0e27,
 80         0x0e28, 0x0e29, 0x0e2a, 0x0e2b,            80         0x0e28, 0x0e29, 0x0e2a, 0x0e2b,
 81         0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,            81         0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
 82         /* 0xd0*/                                  82         /* 0xd0*/
 83         0x0e30, 0x0e31, 0x0e32, 0x0e33,            83         0x0e30, 0x0e31, 0x0e32, 0x0e33,
 84         0x0e34, 0x0e35, 0x0e36, 0x0e37,            84         0x0e34, 0x0e35, 0x0e36, 0x0e37,
 85         0x0e38, 0x0e39, 0x0e3a, 0x0000,            85         0x0e38, 0x0e39, 0x0e3a, 0x0000,
 86         0x0000, 0x0000, 0x0000, 0x0e3f,            86         0x0000, 0x0000, 0x0000, 0x0e3f,
 87         /* 0xe0*/                                  87         /* 0xe0*/
 88         0x0e40, 0x0e41, 0x0e42, 0x0e43,            88         0x0e40, 0x0e41, 0x0e42, 0x0e43,
 89         0x0e44, 0x0e45, 0x0e46, 0x0e47,            89         0x0e44, 0x0e45, 0x0e46, 0x0e47,
 90         0x0e48, 0x0e49, 0x0e4a, 0x0e4b,            90         0x0e48, 0x0e49, 0x0e4a, 0x0e4b,
 91         0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,            91         0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
 92         /* 0xf0*/                                  92         /* 0xf0*/
 93         0x0e50, 0x0e51, 0x0e52, 0x0e53,            93         0x0e50, 0x0e51, 0x0e52, 0x0e53,
 94         0x0e54, 0x0e55, 0x0e56, 0x0e57,            94         0x0e54, 0x0e55, 0x0e56, 0x0e57,
 95         0x0e58, 0x0e59, 0x0e5a, 0x0e5b,            95         0x0e58, 0x0e59, 0x0e5a, 0x0e5b,
 96         0x0000, 0x0000, 0x0000, 0x0000,            96         0x0000, 0x0000, 0x0000, 0x0000,
 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, 0x00, 0x00, 0x    121         0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
122 };                                                122 };
123                                                   123 
124 static const unsigned char page0e[256] = {        124 static const unsigned char page0e[256] = {
125         0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x    125         0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
126         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0x    126         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */
127         0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x    127         0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
128         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x    128         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
129         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x    129         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
130         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x    130         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
131         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x    131         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
132         0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x    132         0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */
133         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x    133         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
134         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x    134         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
135         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x    135         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
136         0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x    136         0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
137 };                                                137 };
138                                                   138 
139 static const unsigned char page20[256] = {        139 static const unsigned char page20[256] = {
140         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    140         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
141         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    141         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
142         0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x    142         0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
143         0x91, 0x92, 0x00, 0x00, 0x93, 0x94, 0x    143         0x91, 0x92, 0x00, 0x00, 0x93, 0x94, 0x00, 0x00, /* 0x18-0x1f */
144         0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x    144         0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
145 };                                                145 };
146                                                   146 
147 static const unsigned char *const page_uni2cha    147 static const unsigned char *const page_uni2charset[256] = {
148         page00, NULL,   NULL,   NULL,   NULL,     148         page00, NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
149         NULL,   NULL,   NULL,   NULL,   NULL,     149         NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   page0e, NULL,   
150         NULL,   NULL,   NULL,   NULL,   NULL,     150         NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
151         NULL,   NULL,   NULL,   NULL,   NULL,     151         NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
152         page20, NULL,   NULL,   NULL,   NULL,     152         page20, NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
153 };                                                153 };
154                                                   154 
155 static const unsigned char charset2lower[256]     155 static const unsigned char charset2lower[256] = {
156         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x    156         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */
157         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x    157         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
158         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x    158         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */
159         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x    159         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
160         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x    160         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */
161         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x    161         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */
162         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x    162         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */
163         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x    163         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */
164         0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x    164         0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x40-0x47 */
165         0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x    165         0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x48-0x4f */
166         0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x    166         0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x50-0x57 */
167         0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x    167         0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */
168         0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x    168         0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x60-0x67 */
169         0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x    169         0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x68-0x6f */
170         0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x    170         0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x70-0x77 */
171         0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x    171         0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */
172                                                   172 
173         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x    173         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, /* 0x80-0x87 */
174         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    174         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
175         0x00, 0x91, 0x92, 0x93, 0x94, 0x95, 0x    175         0x00, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x90-0x97 */
176         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    176         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
177         0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x    177         0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
178         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0x    178         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
179         0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x    179         0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
180         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x    180         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */
181         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x    181         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */
182         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x    182         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
183         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x    183         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
184         0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x    184         0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
185         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x    185         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
186         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x    186         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
187         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x    187         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
188         0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x    188         0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
189 };                                                189 };
190                                                   190 
191 static const unsigned char charset2upper[256]     191 static const unsigned char charset2upper[256] = {
192         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x    192         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */
193         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x    193         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
194         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x    194         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */
195         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x    195         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
196         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x    196         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */
197         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x    197         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */
198         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x    198         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */
199         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x    199         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */
200         0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x    200         0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x40-0x47 */
201         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x    201         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x48-0x4f */
202         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x    202         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x50-0x57 */
203         0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x    203         0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */
204         0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x    204         0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x60-0x67 */
205         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x    205         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x68-0x6f */
206         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x    206         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x70-0x77 */
207         0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x    207         0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */
208                                                   208 
209         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x    209         0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, /* 0x80-0x87 */
210         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    210         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
211         0x00, 0x91, 0x92, 0x93, 0x94, 0x95, 0x    211         0x00, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x90-0x97 */
212         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x    212         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
213         0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x    213         0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
214         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0x    214         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
215         0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0x    215         0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
216         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x    216         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */
217         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x    217         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */
218         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x    218         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
219         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0x    219         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
220         0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x    220         0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
221         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x    221         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
222         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x    222         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
223         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0x    223         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
224         0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x    224         0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
225 };                                                225 };
226                                                   226 
227 static int uni2char(wchar_t uni, unsigned char    227 static int uni2char(wchar_t uni, unsigned char *out, int boundlen)
228 {                                                 228 {
229         const unsigned char *uni2charset;         229         const unsigned char *uni2charset;
230         unsigned char cl = uni & 0x00ff;          230         unsigned char cl = uni & 0x00ff;
231         unsigned char ch = (uni & 0xff00) >> 8    231         unsigned char ch = (uni & 0xff00) >> 8;
232                                                   232 
233         if (boundlen <= 0)                        233         if (boundlen <= 0)
234                 return -ENAMETOOLONG;             234                 return -ENAMETOOLONG;
235                                                   235 
236         uni2charset = page_uni2charset[ch];       236         uni2charset = page_uni2charset[ch];
237         if (uni2charset && uni2charset[cl])       237         if (uni2charset && uni2charset[cl])
238                 out[0] = uni2charset[cl];         238                 out[0] = uni2charset[cl];
239         else                                      239         else
240                 return -EINVAL;                   240                 return -EINVAL;
241         return 1;                                 241         return 1;
242 }                                                 242 }
243                                                   243 
244 static int char2uni(const unsigned char *rawst    244 static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
245 {                                                 245 {
246         *uni = charset2uni[*rawstring];           246         *uni = charset2uni[*rawstring];
247         if (*uni == 0x0000)                       247         if (*uni == 0x0000)
248                 return -EINVAL;                   248                 return -EINVAL;
249         return 1;                                 249         return 1;
250 }                                                 250 }
251                                                   251 
252 static struct nls_table table = {                 252 static struct nls_table table = {
253         .charset        = "cp874",                253         .charset        = "cp874",
254         .alias          = "tis-620",              254         .alias          = "tis-620",
255         .uni2char       = uni2char,               255         .uni2char       = uni2char,
256         .char2uni       = char2uni,               256         .char2uni       = char2uni,
257         .charset2lower  = charset2lower,          257         .charset2lower  = charset2lower,
258         .charset2upper  = charset2upper,          258         .charset2upper  = charset2upper,
259 };                                                259 };
260                                                   260 
261 static int __init init_nls_cp874(void)            261 static int __init init_nls_cp874(void)
262 {                                                 262 {
263         return register_nls(&table);              263         return register_nls(&table);
264 }                                                 264 }
265                                                   265 
266 static void __exit exit_nls_cp874(void)           266 static void __exit exit_nls_cp874(void)
267 {                                                 267 {
268         unregister_nls(&table);                   268         unregister_nls(&table);
269 }                                                 269 }
270                                                   270 
271 module_init(init_nls_cp874)                       271 module_init(init_nls_cp874)
272 module_exit(exit_nls_cp874)                       272 module_exit(exit_nls_cp874)
273                                                   273 
274 MODULE_DESCRIPTION("NLS Thai charset (CP874, T << 
275 MODULE_LICENSE("Dual BSD/GPL");                   274 MODULE_LICENSE("Dual BSD/GPL");
276 MODULE_ALIAS_NLS(tis-620);                        275 MODULE_ALIAS_NLS(tis-620);
277                                                   276 

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