0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046 #include <linux/module.h>
0047 #include <linux/kernel.h>
0048 #include <linux/string.h>
0049 #include <linux/nls.h>
0050 #include <linux/errno.h>
0051
0052 static const wchar_t charset2uni[256] = {
0053
0054 0x0000, 0x0001, 0x0002, 0x0003,
0055 0x0004, 0x0005, 0x0006, 0x0007,
0056 0x0008, 0x0009, 0x000a, 0x000b,
0057 0x000c, 0x000d, 0x000e, 0x000f,
0058
0059 0x0010, 0x0011, 0x0012, 0x0013,
0060 0x0014, 0x0015, 0x0016, 0x0017,
0061 0x0018, 0x0019, 0x001a, 0x001b,
0062 0x001c, 0x001d, 0x001e, 0x001f,
0063
0064 0x0020, 0x0021, 0x0022, 0x0023,
0065 0x0024, 0x0025, 0x0026, 0x0027,
0066 0x0028, 0x0029, 0x002a, 0x002b,
0067 0x002c, 0x002d, 0x002e, 0x002f,
0068
0069 0x0030, 0x0031, 0x0032, 0x0033,
0070 0x0034, 0x0035, 0x0036, 0x0037,
0071 0x0038, 0x0039, 0x003a, 0x003b,
0072 0x003c, 0x003d, 0x003e, 0x003f,
0073
0074 0x0040, 0x0041, 0x0042, 0x0043,
0075 0x0044, 0x0045, 0x0046, 0x0047,
0076 0x0048, 0x0049, 0x004a, 0x004b,
0077 0x004c, 0x004d, 0x004e, 0x004f,
0078
0079 0x0050, 0x0051, 0x0052, 0x0053,
0080 0x0054, 0x0055, 0x0056, 0x0057,
0081 0x0058, 0x0059, 0x005a, 0x005b,
0082 0x005c, 0x005d, 0x005e, 0x005f,
0083
0084 0x0060, 0x0061, 0x0062, 0x0063,
0085 0x0064, 0x0065, 0x0066, 0x0067,
0086 0x0068, 0x0069, 0x006a, 0x006b,
0087 0x006c, 0x006d, 0x006e, 0x006f,
0088
0089 0x0070, 0x0071, 0x0072, 0x0073,
0090 0x0074, 0x0075, 0x0076, 0x0077,
0091 0x0078, 0x0079, 0x007a, 0x007b,
0092 0x007c, 0x007d, 0x007e, 0x007f,
0093
0094 0x00c4, 0x00c5, 0x00c7, 0x00c9,
0095 0x00d1, 0x00d6, 0x00dc, 0x00e1,
0096 0x00e0, 0x00e2, 0x00e4, 0x00e3,
0097 0x00e5, 0x00e7, 0x00e9, 0x00e8,
0098
0099 0x00ea, 0x00eb, 0x00ed, 0x00ec,
0100 0x00ee, 0x00ef, 0x00f1, 0x00f3,
0101 0x00f2, 0x00f4, 0x00f6, 0x00f5,
0102 0x00fa, 0x00f9, 0x00fb, 0x00fc,
0103
0104 0x2020, 0x00b0, 0x00a2, 0x00a3,
0105 0x00a7, 0x2022, 0x00b6, 0x00df,
0106 0x00ae, 0x00a9, 0x2122, 0x00b4,
0107 0x00a8, 0x2260, 0x00c6, 0x00d8,
0108
0109 0x221e, 0x00b1, 0x2264, 0x2265,
0110 0x00a5, 0x00b5, 0x2202, 0x2211,
0111 0x220f, 0x03c0, 0x222b, 0x00aa,
0112 0x00ba, 0x03a9, 0x00e6, 0x00f8,
0113
0114 0x00bf, 0x00a1, 0x00ac, 0x221a,
0115 0x0192, 0x2248, 0x2206, 0x00ab,
0116 0x00bb, 0x2026, 0x00a0, 0x00c0,
0117 0x00c3, 0x00d5, 0x0152, 0x0153,
0118
0119 0x2013, 0x2014, 0x201c, 0x201d,
0120 0x2018, 0x2019, 0x00f7, 0x25ca,
0121 0x00ff, 0x0178, 0x2044, 0x20ac,
0122 0x2039, 0x203a, 0xfb01, 0xfb02,
0123
0124 0x2021, 0x00b7, 0x201a, 0x201e,
0125 0x2030, 0x00c2, 0x00ca, 0x00c1,
0126 0x00cb, 0x00c8, 0x00cd, 0x00ce,
0127 0x00cf, 0x00cc, 0x00d3, 0x00d4,
0128
0129 0xf8ff, 0x00d2, 0x00da, 0x00db,
0130 0x00d9, 0x0131, 0x02c6, 0x02dc,
0131 0x00af, 0x02d8, 0x02d9, 0x02da,
0132 0x00b8, 0x02dd, 0x02db, 0x02c7,
0133 };
0134
0135 static const unsigned char page00[256] = {
0136 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0137 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0138 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0139 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
0140 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
0141 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
0142 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0143 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
0144 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
0145 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
0146 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
0147 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
0148 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
0149 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
0150 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
0151 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
0152 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0153 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0154 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0155 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0156 0xca, 0xc1, 0xa2, 0xa3, 0x00, 0xb4, 0x00, 0xa4,
0157 0xac, 0xa9, 0xbb, 0xc7, 0xc2, 0x00, 0xa8, 0xf8,
0158 0xa1, 0xb1, 0x00, 0x00, 0xab, 0xb5, 0xa6, 0xe1,
0159 0xfc, 0x00, 0xbc, 0xc8, 0x00, 0x00, 0x00, 0xc0,
0160 0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82,
0161 0xe9, 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec,
0162 0x00, 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0x00,
0163 0xaf, 0xf4, 0xf2, 0xf3, 0x86, 0x00, 0x00, 0xa7,
0164 0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0xbe, 0x8d,
0165 0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95,
0166 0x00, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6,
0167 0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0x00, 0x00, 0xd8,
0168 };
0169
0170 static const unsigned char page01[256] = {
0171 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0172 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0174 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0175 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0176 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0177 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0178 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0179 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0180 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0181 0x00, 0x00, 0xce, 0xcf, 0x00, 0x00, 0x00, 0x00,
0182 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0183 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0184 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0185 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0186 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0187 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0189 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00,
0190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0191 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0192 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0193 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0194 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0199 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0200 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0201 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0202 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0203 };
0204
0205 static const unsigned char page02[256] = {
0206 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0210 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0212 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0215 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0216 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0217 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0218 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0219 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0220 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0221 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0222 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0225 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0226 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0227 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0228 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0229 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff,
0231 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0232 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0233 0xf9, 0xfa, 0xfb, 0xfe, 0xf7, 0xfd, 0x00, 0x00,
0234 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0235 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0236 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0237 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0238 };
0239
0240 static const unsigned char page03[256] = {
0241 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0242 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0243 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0244 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0247 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0249 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0250 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0251 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0252 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0253 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0254 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0255 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0256 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0257 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0258 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0259 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0260 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0261 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0262 0x00, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0263 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0264 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0265 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0266 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0267 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0268 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0269 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0270 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0271 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0272 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0273 };
0274
0275 static const unsigned char page20[256] = {
0276 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0277 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0278 0x00, 0x00, 0x00, 0xd0, 0xd1, 0x00, 0x00, 0x00,
0279 0xd4, 0xd5, 0xe2, 0x00, 0xd2, 0xd3, 0xe3, 0x00,
0280 0xa0, 0xe0, 0xa5, 0x00, 0x00, 0x00, 0xc9, 0x00,
0281 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0282 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0283 0x00, 0xdc, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00,
0284 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00,
0285 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0286 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0287 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0288 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0289 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0290 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0291 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0292 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0293 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0294 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0295 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0296 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0297 0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00,
0298 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0299 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0300 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0301 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0302 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0303 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0304 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0305 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0306 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0307 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0308 };
0309
0310 static const unsigned char page21[256] = {
0311 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0312 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0313 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0314 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0315 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00,
0316 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0317 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0318 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0319 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0320 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0321 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0322 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0323 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0324 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0325 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0326 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0327 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0328 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0329 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0330 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0331 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0332 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0333 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0334 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0335 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0336 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0337 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0338 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0339 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0340 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0341 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0342 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0343 };
0344
0345 static const unsigned char page22[256] = {
0346 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xc6, 0x00,
0347 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8,
0348 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0349 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xb0, 0x00,
0350 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0351 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00,
0352 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0353 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0354 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0355 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0356 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0357 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0358 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00,
0359 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0360 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0361 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0362 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0363 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0364 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0365 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0366 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0367 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0368 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0369 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0370 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0371 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0372 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0373 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0374 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0375 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0376 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0377 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0378 };
0379
0380 static const unsigned char page25[256] = {
0381 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0382 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0383 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0384 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0385 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0386 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0387 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0388 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0389 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0390 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0391 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0392 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0393 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0394 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0395 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0396 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0397 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0398 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0399 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0400 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0401 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0402 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0403 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0404 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0405 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0406 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00,
0407 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0408 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0409 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0410 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0411 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0412 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0413 };
0414
0415 static const unsigned char pagef8[256] = {
0416 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0417 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0418 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0419 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0420 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0421 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0422 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0423 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0424 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0425 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0426 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0427 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0428 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0429 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0430 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0431 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0432 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0433 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0434 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0435 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0436 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0437 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0438 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0439 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0440 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0441 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0442 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0443 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0444 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0445 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0446 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0447 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
0448 };
0449
0450 static const unsigned char pagefb[256] = {
0451 0x00, 0xde, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00,
0452 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0453 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0454 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0455 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0456 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0457 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0458 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0459 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0460 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0461 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0462 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0463 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0464 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0465 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0466 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0467 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0468 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0469 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0470 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0471 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0472 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0473 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0474 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0475 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0476 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0477 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0478 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0479 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0480 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0481 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0482 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0483 };
0484
0485 static const unsigned char *const page_uni2charset[256] = {
0486 page00, page01, page02, page03, NULL, NULL, NULL, NULL,
0487 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0488 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0489 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0490 page20, page21, page22, NULL, NULL, page25, NULL, NULL,
0491 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0492 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0493 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0494 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0495 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0496 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0497 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0498 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0499 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0500 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0501 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0502 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0503 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0504 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0505 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0506 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0507 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0508 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0509 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0510 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0511 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0512 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0513 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0514 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0515 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0516 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0517 pagef8, NULL, NULL, pagefb, NULL, NULL, NULL, NULL,
0518 };
0519
0520 static const unsigned char charset2lower[256] = {
0521 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0522 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0523 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0524 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0525 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0526 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0527 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0528 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0529 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0530 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0531 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0532 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0533 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0534 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0535 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0536 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0537 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0538 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0539 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0540 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0541 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0542 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0543 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0544 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0545 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0546 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0547 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0548 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0549 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0550 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0551 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0552 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0553 };
0554
0555 static const unsigned char charset2upper[256] = {
0556 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0557 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0558 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0559 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0560 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0561 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0562 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0563 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0564 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0565 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0566 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0567 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0568 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0569 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0570 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0571 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0572 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0573 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0574 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0575 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0576 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0577 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0578 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0579 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0580 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0581 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0582 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0583 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0584 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0585 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0586 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0587 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0588 };
0589
0590 static int uni2char(wchar_t uni, unsigned char *out, int boundlen)
0591 {
0592 const unsigned char *uni2charset;
0593 unsigned char cl = uni & 0x00ff;
0594 unsigned char ch = (uni & 0xff00) >> 8;
0595
0596 if (boundlen <= 0)
0597 return -ENAMETOOLONG;
0598
0599 uni2charset = page_uni2charset[ch];
0600 if (uni2charset && uni2charset[cl])
0601 out[0] = uni2charset[cl];
0602 else
0603 return -EINVAL;
0604 return 1;
0605 }
0606
0607 static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
0608 {
0609 *uni = charset2uni[*rawstring];
0610 if (*uni == 0x0000)
0611 return -EINVAL;
0612 return 1;
0613 }
0614
0615 static struct nls_table table = {
0616 .charset = "macroman",
0617 .uni2char = uni2char,
0618 .char2uni = char2uni,
0619 .charset2lower = charset2lower,
0620 .charset2upper = charset2upper,
0621 };
0622
0623 static int __init init_nls_macroman(void)
0624 {
0625 return register_nls(&table);
0626 }
0627
0628 static void __exit exit_nls_macroman(void)
0629 {
0630 unregister_nls(&table);
0631 }
0632
0633 module_init(init_nls_macroman)
0634 module_exit(exit_nls_macroman)
0635
0636 MODULE_LICENSE("Dual BSD/GPL");