1 /* 1 2 * linux/fs/nls/nls_ascii.c 3 * 4 * Charset ascii translation tables. 5 * Generated automatically from the Unicode an 6 * tables from the Unicode Organization (www.u 7 * The Unicode to charset table has only exact 8 */ 9 10 #include <linux/module.h> 11 #include <linux/kernel.h> 12 #include <linux/string.h> 13 #include <linux/nls.h> 14 #include <linux/errno.h> 15 16 static const wchar_t charset2uni[256] = { 17 /* 0x00*/ 18 0x0000, 0x0001, 0x0002, 0x0003, 19 0x0004, 0x0005, 0x0006, 0x0007, 20 0x0008, 0x0009, 0x000a, 0x000b, 21 0x000c, 0x000d, 0x000e, 0x000f, 22 /* 0x10*/ 23 0x0010, 0x0011, 0x0012, 0x0013, 24 0x0014, 0x0015, 0x0016, 0x0017, 25 0x0018, 0x0019, 0x001a, 0x001b, 26 0x001c, 0x001d, 0x001e, 0x001f, 27 /* 0x20*/ 28 0x0020, 0x0021, 0x0022, 0x0023, 29 0x0024, 0x0025, 0x0026, 0x0027, 30 0x0028, 0x0029, 0x002a, 0x002b, 31 0x002c, 0x002d, 0x002e, 0x002f, 32 /* 0x30*/ 33 0x0030, 0x0031, 0x0032, 0x0033, 34 0x0034, 0x0035, 0x0036, 0x0037, 35 0x0038, 0x0039, 0x003a, 0x003b, 36 0x003c, 0x003d, 0x003e, 0x003f, 37 /* 0x40*/ 38 0x0040, 0x0041, 0x0042, 0x0043, 39 0x0044, 0x0045, 0x0046, 0x0047, 40 0x0048, 0x0049, 0x004a, 0x004b, 41 0x004c, 0x004d, 0x004e, 0x004f, 42 /* 0x50*/ 43 0x0050, 0x0051, 0x0052, 0x0053, 44 0x0054, 0x0055, 0x0056, 0x0057, 45 0x0058, 0x0059, 0x005a, 0x005b, 46 0x005c, 0x005d, 0x005e, 0x005f, 47 /* 0x60*/ 48 0x0060, 0x0061, 0x0062, 0x0063, 49 0x0064, 0x0065, 0x0066, 0x0067, 50 0x0068, 0x0069, 0x006a, 0x006b, 51 0x006c, 0x006d, 0x006e, 0x006f, 52 /* 0x70*/ 53 0x0070, 0x0071, 0x0072, 0x0073, 54 0x0074, 0x0075, 0x0076, 0x0077, 55 0x0078, 0x0079, 0x007a, 0x007b, 56 0x007c, 0x007d, 0x007e, 0x007f, 57 }; 58 59 static const unsigned char page00[256] = { 60 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x 61 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x 62 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x 63 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x 64 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x 65 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x 66 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x 67 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x 68 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x 69 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x 70 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x 71 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x 72 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x 73 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x 74 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x 75 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x 76 }; 77 78 static const unsigned char *const page_uni2cha 79 page00, 80 }; 81 82 static const unsigned char charset2lower[256] 83 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x 84 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x 85 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x 86 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x 87 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x 88 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x 89 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x 90 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x 91 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x 92 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x 93 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x 94 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x 95 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x 96 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x 97 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x 98 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x 99 }; 100 101 static const unsigned char charset2upper[256] 102 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x 103 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x 104 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x 105 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x 106 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x 107 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x 108 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x 109 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x 110 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x 111 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x 112 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x 113 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x 114 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x 115 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x 116 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x 117 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x 118 }; 119 120 static int uni2char(wchar_t uni, unsigned char 121 { 122 const unsigned char *uni2charset; 123 unsigned char cl = uni & 0x00ff; 124 unsigned char ch = (uni & 0xff00) >> 8 125 126 if (boundlen <= 0) 127 return -ENAMETOOLONG; 128 129 uni2charset = page_uni2charset[ch]; 130 if (uni2charset && uni2charset[cl]) 131 out[0] = uni2charset[cl]; 132 else 133 return -EINVAL; 134 return 1; 135 } 136 137 static int char2uni(const unsigned char *rawst 138 { 139 *uni = charset2uni[*rawstring]; 140 if (*uni == 0x0000) 141 return -EINVAL; 142 return 1; 143 } 144 145 static struct nls_table table = { 146 .charset = "ascii", 147 .uni2char = uni2char, 148 .char2uni = char2uni, 149 .charset2lower = charset2lower, 150 .charset2upper = charset2upper, 151 }; 152 153 static int __init init_nls_ascii(void) 154 { 155 return register_nls(&table); 156 } 157 158 static void __exit exit_nls_ascii(void) 159 { 160 unregister_nls(&table); 161 } 162 163 module_init(init_nls_ascii) 164 module_exit(exit_nls_ascii) 165 166 MODULE_DESCRIPTION("NLS ASCII (United States)" 167 MODULE_LICENSE("Dual BSD/GPL"); 168
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.