00001
00002
00003
00004
00005
00006
00007 #ifndef API_HAVE_CHARSET_ALIAS_TABLE
00008 #define API_HAVE_CHARSET_ALIAS_TABLE
00009
00010 #include <stdlib.h>
00011 #include <string.h>
00012
00013
00014 static struct charset_alias {
00015 const char *name;
00016 const char *target;
00017 } const charset_alias_list[] = {
00018 {"424", "cp424"},
00019 {"437", "cp437"},
00020 {"850", "cp850"},
00021 {"851", "cp851"},
00022 {"852", "cp852"},
00023 {"855", "cp855"},
00024 {"857", "cp857"},
00025 {"860", "cp860"},
00026 {"861", "cp861"},
00027 {"862", "cp862"},
00028 {"863", "cp863"},
00029 {"865", "cp865"},
00030 {"866", "cp866"},
00031 {"869", "cp869"},
00032 {"904", "cp904"},
00033 {"ansi_x3.110-1983", "iso-ir-99"},
00034 {"ansi_x3.4-1968", "us-ascii"},
00035 {"ansi_x3.4-1986", "us-ascii"},
00036 {"arabic", "iso-8859-6"},
00037 {"arabic7", "iso-ir-89"},
00038 {"ascii", "us-ascii"},
00039 {"asmo-708", "iso-8859-6"},
00040 {"asmo_449", "iso-ir-89"},
00041 {"bs_4730", "iso-ir-4"},
00042 {"bs_viewdata", "iso-ir-47"},
00043 {"ca", "iso-ir-121"},
00044 {"chinese", "gb_2312-80"},
00045 {"cp-ar", "cp868"},
00046 {"cp-gr", "cp869"},
00047 {"cp-is", "cp861"},
00048 {"cp037_ibmuscanada", "cp037"},
00049 {"cp10000_macroman", "cp10000"},
00050 {"cp10006_macgreek", "cp10006"},
00051 {"cp10007_maccyrillic", "cp10007"},
00052 {"cp10029_maclatin2", "cp10029"},
00053 {"cp10079_macicelandic", "cp10079"},
00054 {"cp10081_macturkish", "cp10081"},
00055 {"cp1250", "windows-1250"},
00056 {"cp1251", "windows-1251"},
00057 {"cp1252", "windows-1252"},
00058 {"cp1253", "windows-1253"},
00059 {"cp1254", "windows-1254"},
00060 {"cp1255", "windows-1255"},
00061 {"cp1256", "windows-1256"},
00062 {"cp1257", "windows-1257"},
00063 {"cp1258", "windows-1258"},
00064 {"cp367", "us-ascii"},
00065 {"cp737latingreek", "cp737"},
00066 {"cp819", "iso-8859-1"},
00067 {"cp856_hebrew_pc", "cp856"},
00068 {"cp875_ibmgreek", "cp875"},
00069 {"csa7-1", "iso-ir-121"},
00070 {"csa7-2", "iso-ir-122"},
00071 {"csa_t500-1983", "iso-ir-99"},
00072 {"csa_z243.4-1985-1", "iso-ir-121"},
00073 {"csa_z243.4-1985-2", "iso-ir-122"},
00074 {"csa_z243.4-1985-gr", "iso-ir-123"},
00075 {"csascii", "us-ascii"},
00076 {"csbig5", "big5"},
00077 {"cshalfwidthkatakana", "jis_x0201"},
00078 {"csibm1026", "cp1026"},
00079 {"csibm424", "cp424"},
00080 {"csibm500", "cp500"},
00081 {"csibm855", "cp855"},
00082 {"csibm857", "cp857"},
00083 {"csibm860", "cp860"},
00084 {"csibm861", "cp861"},
00085 {"csibm863", "cp863"},
00086 {"csibm864", "cp864"},
00087 {"csibm865", "cp865"},
00088 {"csibm866", "cp866"},
00089 {"csibm869", "cp869"},
00090 {"csiso2022jp", "iso-2022-jp"},
00091 {"csiso2022jp2", "iso-2022-jp-2"},
00092 {"csisolatin1", "iso-8859-1"},
00093 {"csisolatin2", "iso-8859-2"},
00094 {"csisolatin3", "iso-8859-3"},
00095 {"csisolatin4", "iso-8859-4"},
00096 {"csisolatin5", "iso-8859-9"},
00097 {"csisolatin6", "iso-8859-10"},
00098 {"csisolatinarabic", "iso-8859-6"},
00099 {"csisolatincyrillic", "iso-8859-5"},
00100 {"csisolatingreek", "iso-8859-7"},
00101 {"csisolatinhebrew", "iso-8859-8"},
00102 {"cskoi8r", "koi8-r"},
00103 {"csn_369103", "iso-ir-139"},
00104 {"cspc775baltic", "cp775"},
00105 {"cspc850multilingual", "cp850"},
00106 {"cspc862latinhebrew", "cp862"},
00107 {"cspc8codepage437", "cp437"},
00108 {"cspcp852", "cp852"},
00109 {"csshiftjis", "shift_jis"},
00110 {"cuba", "iso-ir-151"},
00111 {"cyrillic", "iso-8859-5"},
00112 {"de", "iso-ir-21"},
00113 {"dec", "dec-mcs"},
00114 {"din_66003", "iso-ir-21"},
00115 {"dk", "iso646-dk"},
00116 {"ds2089", "iso646-dk"},
00117 {"ds_2089", "iso646-dk"},
00118 {"e13b", "iso-ir-98"},
00119 {"ebcdic-be", "cp274"},
00120 {"ebcdic-br", "cp275"},
00121 {"ebcdic-cp-ar1", "cp420"},
00122 {"ebcdic-cp-ar2", "cp918"},
00123 {"ebcdic-cp-be", "cp500"},
00124 {"ebcdic-cp-ca", "cp037"},
00125 {"ebcdic-cp-ch", "cp500"},
00126 {"ebcdic-cp-dk", "cp277"},
00127 {"ebcdic-cp-es", "cp284"},
00128 {"ebcdic-cp-fi", "cp278"},
00129 {"ebcdic-cp-fr", "cp297"},
00130 {"ebcdic-cp-gb", "cp285"},
00131 {"ebcdic-cp-gr", "cp423"},
00132 {"ebcdic-cp-he", "cp424"},
00133 {"ebcdic-cp-is", "cp871"},
00134 {"ebcdic-cp-it", "cp280"},
00135 {"ebcdic-cp-nl", "cp037"},
00136 {"ebcdic-cp-no", "cp277"},
00137 {"ebcdic-cp-roece", "cp870"},
00138 {"ebcdic-cp-se", "cp278"},
00139 {"ebcdic-cp-tr", "cp905"},
00140 {"ebcdic-cp-us", "cp037"},
00141 {"ebcdic-cp-wt", "cp037"},
00142 {"ebcdic-cp-yu", "cp870"},
00143 {"ebcdic-cyrillic", "cp880"},
00144 {"ebcdic-int", "cp038"},
00145 {"ebcdic-jp-e", "cp281"},
00146 {"ebcdic-jp-kana", "cp290"},
00147 {"ecma-114", "iso-8859-6"},
00148 {"ecma-118", "iso-8859-7"},
00149 {"ecma-cyrillic", "iso-ir-111"},
00150 {"elot_928", "iso-8859-7"},
00151 {"es", "iso-ir-17"},
00152 {"es2", "iso-ir-85"},
00153 {"fi", "iso-ir-10"},
00154 {"fr", "iso-ir-69"},
00155 {"gb", "iso-ir-4"},
00156 {"gb_1988-80", "iso-ir-57"},
00157 {"gost_19768-74", "iso-ir-153"},
00158 {"greek", "iso-8859-7"},
00159 {"greek-ccitt", "iso-ir-150"},
00160 {"greek7", "iso-ir-88"},
00161 {"greek7-old", "iso-ir-18"},
00162 {"greek8", "iso-8859-7"},
00163 {"hebrew", "iso-8859-8"},
00164 {"hu", "iso-ir-86"},
00165 {"ibm037", "cp037"},
00166 {"ibm038", "cp038"},
00167 {"ibm1026", "cp1026"},
00168 {"ibm273", "cp273"},
00169 {"ibm274", "cp274"},
00170 {"ibm275", "cp275"},
00171 {"ibm277", "cp277"},
00172 {"ibm278", "cp278"},
00173 {"ibm280", "cp280"},
00174 {"ibm281", "cp281"},
00175 {"ibm284", "cp284"},
00176 {"ibm285", "cp285"},
00177 {"ibm290", "cp290"},
00178 {"ibm297", "cp297"},
00179 {"ibm367", "us-ascii"},
00180 {"ibm420", "cp420"},
00181 {"ibm423", "cp423"},
00182 {"ibm424", "cp424"},
00183 {"ibm437", "cp437"},
00184 {"ibm500", "cp500"},
00185 {"ibm737", "cp737"},
00186 {"ibm775", "cp775"},
00187 {"ibm819", "iso-8859-1"},
00188 {"ibm850", "cp850"},
00189 {"ibm851", "cp851"},
00190 {"ibm852", "cp852"},
00191 {"ibm855", "cp855"},
00192 {"ibm857", "cp857"},
00193 {"ibm860", "cp860"},
00194 {"ibm861", "cp861"},
00195 {"ibm862", "cp862"},
00196 {"ibm863", "cp863"},
00197 {"ibm864", "cp864"},
00198 {"ibm865", "cp865"},
00199 {"ibm866", "cp866"},
00200 {"ibm868", "cp868"},
00201 {"ibm869", "cp869"},
00202 {"ibm870", "cp870"},
00203 {"ibm871", "cp871"},
00204 {"ibm874", "cp874"},
00205 {"ibm880", "cp880"},
00206 {"ibm891", "cp891"},
00207 {"ibm903", "cp903"},
00208 {"ibm904", "cp904"},
00209 {"ibm905", "cp905"},
00210 {"ibm918", "cp918"},
00211 {"iec_p27-1", "iso-ir-143"},
00212 {"inis", "iso-ir-49"},
00213 {"inis-8", "iso-ir-50"},
00214 {"inis-cyrillic", "iso-ir-51"},
00215 {"irv", "iso-ir-2"},
00216 {"iso-ir-100", "iso-8859-1"},
00217 {"iso-ir-101", "iso-8859-2"},
00218 {"iso-ir-109", "iso-8859-3"},
00219 {"iso-ir-110", "iso-8859-4"},
00220 {"iso-ir-126", "iso-8859-7"},
00221 {"iso-ir-127", "iso-8859-6"},
00222 {"iso-ir-138", "iso-8859-8"},
00223 {"iso-ir-144", "iso-8859-5"},
00224 {"iso-ir-148", "iso-8859-9"},
00225 {"iso-ir-157", "iso-8859-10"},
00226 {"iso-ir-58", "gb_2312-80"},
00227 {"iso-ir-87", "jis_x0208-1983"},
00228 {"iso646-ca", "iso-ir-121"},
00229 {"iso646-ca2", "iso-ir-122"},
00230 {"iso646-cu", "iso-ir-151"},
00231 {"iso646-de", "iso-ir-21"},
00232 {"iso646-es", "iso-ir-17"},
00233 {"iso646-es2", "iso-ir-85"},
00234 {"iso646-fi", "iso-ir-10"},
00235 {"iso646-fr", "iso-ir-69"},
00236 {"iso646-fr1", "iso-ir-25"},
00237 {"iso646-gb", "iso-ir-4"},
00238 {"iso646-hu", "iso-ir-86"},
00239 {"iso646-it", "iso-ir-15"},
00240 {"iso646-jp", "iso-ir-14"},
00241 {"iso646-jp-ocr-a", "iso-ir-91"},
00242 {"iso646-jp-ocr-b", "iso-ir-92"},
00243 {"iso646-no", "iso-ir-60"},
00244 {"iso646-no2", "iso-ir-61"},
00245 {"iso646-pt", "iso-ir-16"},
00246 {"iso646-pt2", "iso-ir-84"},
00247 {"iso646-se", "iso-ir-10"},
00248 {"iso646-se2", "iso-ir-11"},
00249 {"iso646-us", "us-ascii"},
00250 {"iso646-yu", "iso-ir-141"},
00251 {"iso_10367-box", "iso-ir-155"},
00252 {"iso_2033-1983", "iso-ir-98"},
00253 {"iso_5427", "iso-ir-37"},
00254 {"iso_5427:1981", "iso-ir-54"},
00255 {"iso_5428:1980", "iso-ir-55"},
00256 {"iso_646.irv:1983", "iso-ir-2"},
00257 {"iso_646.irv:1991", "us-ascii"},
00258 {"iso_6937-2-25", "iso-ir-152"},
00259 {"iso_6937-2-add", "iso-ir-142"},
00260 {"iso_8859-1", "iso-8859-1"},
00261 {"iso_8859-10", "iso-8859-10"},
00262 {"iso_8859-10:1992", "iso-8859-10"},
00263 {"iso_8859-13", "iso-8859-13"},
00264 {"iso_8859-13:1998", "iso-8859-13"},
00265 {"iso_8859-14", "iso-8859-14"},
00266 {"iso_8859-14:1998", "iso-8859-14"},
00267 {"iso_8859-15", "iso-8859-15"},
00268 {"iso_8859-15:1998", "iso-8859-15"},
00269 {"iso_8859-1:1987", "iso-8859-1"},
00270 {"iso_8859-2", "iso-8859-2"},
00271 {"iso_8859-2:1987", "iso-8859-2"},
00272 {"iso_8859-3", "iso-8859-3"},
00273 {"iso_8859-3:1988", "iso-8859-3"},
00274 {"iso_8859-4", "iso-8859-4"},
00275 {"iso_8859-4:1988", "iso-8859-4"},
00276 {"iso_8859-5", "iso-8859-5"},
00277 {"iso_8859-5:1988", "iso-8859-5"},
00278 {"iso_8859-6", "iso-8859-6"},
00279 {"iso_8859-6:1987", "iso-8859-6"},
00280 {"iso_8859-7", "iso-8859-7"},
00281 {"iso_8859-7:1987", "iso-8859-7"},
00282 {"iso_8859-8", "iso-8859-8"},
00283 {"iso_8859-8:1988", "iso-8859-8"},
00284 {"iso_8859-9", "iso-8859-9"},
00285 {"iso_8859-9:1989", "iso-8859-9"},
00286 {"iso_8859-supp", "iso-ir-154"},
00287 {"iso_9036", "iso-ir-89"},
00288 {"it", "iso-ir-15"},
00289 {"jis_c6220-1969", "iso-ir-13"},
00290 {"jis_c6220-1969-jp", "iso-ir-13"},
00291 {"jis_c6220-1969-ro", "iso-ir-14"},
00292 {"jis_c6226-1983", "jis_x0208-1983"},
00293 {"jis_c6229-1984-a", "iso-ir-91"},
00294 {"jis_c6229-1984-b", "iso-ir-92"},
00295 {"jis_c6229-1984-b-add", "iso-ir-93"},
00296 {"jis_c6229-1984-hand", "iso-ir-94"},
00297 {"jis_c6229-1984-hand-add", "iso-ir-95"},
00298 {"jis_c6229-1984-kana", "iso-ir-96"},
00299 {"jp", "iso-ir-14"},
00300 {"jp-ocr-a", "iso-ir-91"},
00301 {"jp-ocr-b", "iso-ir-92"},
00302 {"jp-ocr-b-add", "iso-ir-93"},
00303 {"jp-ocr-hand", "iso-ir-94"},
00304 {"jp-ocr-hand-add", "iso-ir-95"},
00305 {"js", "iso-ir-141"},
00306 {"jus_i.b1.002", "iso-ir-141"},
00307 {"jus_i.b1.003-mac", "iso-ir-147"},
00308 {"jus_i.b1.003-serb", "iso-ir-146"},
00309 {"katakana", "iso-ir-13"},
00310 {"ks_x_1001", "ksx1001"},
00311 {"ksc5636", "iso646-kr"},
00312 {"l1", "iso-8859-1"},
00313 {"l2", "iso-8859-2"},
00314 {"l3", "iso-8859-3"},
00315 {"l4", "iso-8859-4"},
00316 {"l5", "iso-8859-9"},
00317 {"l6", "iso-8859-10"},
00318 {"lap", "iso-ir-158"},
00319 {"latin-greek", "iso-ir-19"},
00320 {"latin-greek-1", "iso-ir-27"},
00321 {"latin-lap", "iso-ir-158"},
00322 {"latin1", "iso-8859-1"},
00323 {"latin1-2-5", "iso-ir-154"},
00324 {"latin2", "iso-8859-2"},
00325 {"latin3", "iso-8859-3"},
00326 {"latin4", "iso-8859-4"},
00327 {"latin5", "iso-8859-9"},
00328 {"latin6", "iso-8859-10"},
00329 {"mac", "macintosh"},
00330 {"maccenteuro", "mac-ce"},
00331 {"maccroatian", "mac-croatian"},
00332 {"maccyrillic", "mac-cyrillic"},
00333 {"macdingbats", "mac-dingbats"},
00334 {"macedonian", "iso-ir-147"},
00335 {"macgreek", "mac-greek"},
00336 {"maciceland", "mac-iceland"},
00337 {"macroman", "mac-roman"},
00338 {"macromania", "mac-romania"},
00339 {"macthai", "mac-thai"},
00340 {"macturkish", "mac-turkish"},
00341 {"macukraine", "mac-ukraine"},
00342 {"ms_kanji", "shift_jis"},
00343 {"msz_7795.3", "iso-ir-86"},
00344 {"naplps", "iso-ir-99"},
00345 {"nats-dano", "iso-ir-9-1"},
00346 {"nats-dano-add", "iso-ir-9-2"},
00347 {"nats-sefi", "iso-ir-8-1"},
00348 {"nats-sefi-add", "iso-ir-8-2"},
00349 {"nc_nc00-10:81", "iso-ir-151"},
00350 {"nf_z_62-010", "iso-ir-69"},
00351 {"nf_z_62-010_(1973)", "iso-ir-25"},
00352 {"no", "iso-ir-60"},
00353 {"no2", "iso-ir-61"},
00354 {"ns_4551-1", "iso-ir-60"},
00355 {"ns_4551-2", "iso-ir-61"},
00356 {"pt", "iso-ir-16"},
00357 {"pt2", "iso-ir-84"},
00358 {"r8", "hp-roman8"},
00359 {"roman8", "hp-roman8"},
00360 {"se", "iso-ir-10"},
00361 {"se2", "iso-ir-11"},
00362 {"sen_850200_b", "iso-ir-10"},
00363 {"sen_850200_c", "iso-ir-11"},
00364 {"serbian", "iso-ir-146"},
00365 {"st_sev_358-88", "iso-ir-153"},
00366 {"t.101-g2", "iso-ir-128"},
00367 {"t.61", "iso-ir-103"},
00368 {"t.61-7bit", "iso-ir-102"},
00369 {"t.61-8bit", "iso-ir-103"},
00370 {"uk", "iso-ir-4"},
00371 {"us", "us-ascii"},
00372 {"utf-7", "unicode-1-1-utf-7"},
00373 {"videotex-suppl", "iso-ir-70"},
00374 {"x0201", "jis_x0201"},
00375 {"x0201-7", "iso-ir-13"},
00376 {"x0208", "jis_x0208-1983"},
00377 {"yu", "iso-ir-141"},
00378 {NULL, NULL} };
00379
00380 static const size_t charset_alias_count =
00381 sizeof(charset_alias_list)/sizeof(charset_alias_list[0]) - 1;
00382
00383
00384 static int charset_alias_compare (const void *u, const void *v)
00385 {
00386 const struct charset_alias *const a = u;
00387 const struct charset_alias *const b = v;
00388 return strcmp(a->name, b->name);
00389 }
00390
00391
00392
00393 static const char *charset_alias_find (const char *name)
00394 {
00395 struct charset_alias key;
00396 struct charset_alias *alias;
00397 #if 'A' == '\xC1'
00398
00399
00400
00401
00402
00403
00404
00405 if (isdigit(charset_alias_list[0].name[0])) {
00406 qsort((void *)charset_alias_list, charset_alias_count,
00407 sizeof(charset_alias_list[0]),
00408 charset_alias_compare);
00409 }
00410 #endif
00411 key.name = name;
00412 alias = bsearch(&key, charset_alias_list, charset_alias_count,
00413 sizeof(charset_alias_list[0]),
00414 charset_alias_compare);
00415 if (alias)
00416 return alias->target;
00417 else
00418 return NULL;
00419 }
00420
00421 #endif