/* GENERATED CODE -- DO NOT EDIT                     -*- C -*-
 * Use the following command to regenerate this file:
 *     awk -f ../build/gen_aliases.awk \
 *            ../ccs/charset.aliases \
 *            ../ces/charset.aliases > charset_alias.h
 */
#ifndef API_HAVE_CHARSET_ALIAS_TABLE
#define API_HAVE_CHARSET_ALIAS_TABLE

#include <stdlib.h>
#include <string.h>

/* This is a sorted table of alias -> true name mappings. */
static struct charset_alias {
    const char *name;
    const char *target;
} const charset_alias_list[] = {
    {"424", "cp424"},
    {"437", "cp437"},
    {"646", "us-ascii"},	/* OSD_POSIX Alias */
    {"646ca", "iso-ir-121"},	/* OSD_POSIX Alias */
    {"646ca2", "iso-ir-122"},	/* OSD_POSIX Alias */
    {"646cu", "iso-ir-151"},	/* OSD_POSIX Alias */
    {"646de", "iso-ir-21"},	/* OSD_POSIX Alias */
    {"646dk", "iso646-dk"},	/* OSD_POSIX Alias */
    {"646es", "iso-ir-17"},	/* OSD_POSIX Alias */
    {"646es2", "iso-ir-85"},	/* OSD_POSIX Alias */
    {"646fi", "iso-ir-10"},	/* OSD_POSIX Alias */
    {"646fr", "iso-ir-69"},	/* OSD_POSIX Alias */
    {"646fr1", "iso-ir-25"},	/* OSD_POSIX Alias */
    {"646gb", "iso-ir-4"},	/* OSD_POSIX Alias */
    {"646hu", "iso-ir-86"},	/* OSD_POSIX Alias */
    {"646it", "iso-ir-15"},	/* OSD_POSIX Alias */
    {"646jp", "iso-ir-14"},	/* OSD_POSIX Alias */
    {"646kr", "iso646-kr"},	/* OSD_POSIX Alias */
    {"646no", "iso-ir-60"},	/* OSD_POSIX Alias */
    {"646no2", "iso-ir-61"},	/* OSD_POSIX Alias */
    {"646pt", "iso-ir-16"},	/* OSD_POSIX Alias */
    {"646pt2", "iso-ir-84"},	/* OSD_POSIX Alias */
    {"646se", "iso-ir-10"},	/* OSD_POSIX Alias */
    {"646se2", "iso-ir-11"},	/* OSD_POSIX Alias */
    {"646us", "us-ascii"},	/* OSD_POSIX Alias */
    {"646yu", "iso-ir-141"},	/* OSD_POSIX Alias */
    {"850", "cp850"},
    {"851", "cp851"},
    {"852", "cp852"},
    {"855", "cp855"},
    {"857", "cp857"},
    {"860", "cp860"},
    {"861", "cp861"},
    {"862", "cp862"},
    {"863", "cp863"},
    {"865", "cp865"},
    {"866", "cp866"},
    {"869", "cp869"},
    {"8859", "iso-8859-1"},
    {"904", "cp904"},
    {"ansi_x3.110-1983", "iso-ir-99"},
    {"ansi_x3.4-1968", "us-ascii"},
    {"ansi_x3.4-1986", "us-ascii"},
    {"arabic", "iso-8859-6"},
    {"arabic7", "iso-ir-89"},
    {"ascii", "us-ascii"},
    {"asmo-708", "iso-8859-6"},
    {"asmo_449", "iso-ir-89"},
    {"bs_4730", "iso-ir-4"},
    {"bs_viewdata", "iso-ir-47"},
    {"ca", "iso-ir-121"},
    {"chinese", "gb_2312-80"},
    {"cp-ar", "cp868"},
    {"cp-gr", "cp869"},
    {"cp-is", "cp861"},
    {"cp037_ibmuscanada", "cp037"},
    {"cp10000_macroman", "cp10000"},
    {"cp10006_macgreek", "cp10006"},
    {"cp10007_maccyrillic", "cp10007"},
    {"cp10029_maclatin2", "cp10029"},
    {"cp10079_macicelandic", "cp10079"},
    {"cp10081_macturkish", "cp10081"},
    {"cp1250", "windows-1250"},
    {"cp1251", "windows-1251"},
    {"cp1252", "windows-1252"},
    {"cp1253", "windows-1253"},
    {"cp1254", "windows-1254"},
    {"cp1255", "windows-1255"},
    {"cp1256", "windows-1256"},
    {"cp1257", "windows-1257"},
    {"cp1258", "windows-1258"},
    {"cp367", "us-ascii"},
    {"cp737latingreek", "cp737"},
    {"cp819", "iso-8859-1"},
    {"cp856_hebrew_pc", "cp856"},
    {"cp875_ibmgreek", "cp875"},
    {"csa7-1", "iso-ir-121"},
    {"csa7-2", "iso-ir-122"},
    {"csa_t500-1983", "iso-ir-99"},
    {"csa_z243.4-1985-1", "iso-ir-121"},
    {"csa_z243.4-1985-2", "iso-ir-122"},
    {"csa_z243.4-1985-gr", "iso-ir-123"},
    {"csascii", "us-ascii"},
    {"csbig5", "big5"},
    {"cshalfwidthkatakana", "jis_x0201"},
    {"csibm1026", "cp1026"},
    {"csibm424", "cp424"},
    {"csibm500", "cp500"},
    {"csibm855", "cp855"},
    {"csibm857", "cp857"},
    {"csibm860", "cp860"},
    {"csibm861", "cp861"},
    {"csibm863", "cp863"},
    {"csibm864", "cp864"},
    {"csibm865", "cp865"},
    {"csibm866", "cp866"},
    {"csibm869", "cp869"},
    {"csiso2022jp", "iso-2022-jp"},
    {"csiso2022jp2", "iso-2022-jp-2"},
    {"csisolatin1", "iso-8859-1"},
    {"csisolatin2", "iso-8859-2"},
    {"csisolatin3", "iso-8859-3"},
    {"csisolatin4", "iso-8859-4"},
    {"csisolatin5", "iso-8859-9"},
    {"csisolatin6", "iso-8859-10"},
    {"csisolatinarabic", "iso-8859-6"},
    {"csisolatincyrillic", "iso-8859-5"},
    {"csisolatingreek", "iso-8859-7"},
    {"csisolatinhebrew", "iso-8859-8"},
    {"cskoi8r", "koi8-r"},
    {"csn_369103", "iso-ir-139"},
    {"cspc775baltic", "cp775"},
    {"cspc850multilingual", "cp850"},
    {"cspc862latinhebrew", "cp862"},
    {"cspc8codepage437", "cp437"},
    {"cspcp852", "cp852"},
    {"csshiftjis", "shift_jis"},
    {"cuba", "iso-ir-151"},
    {"cyrillic", "iso-8859-5"},
    {"de", "iso-ir-21"},
    {"dec", "dec-mcs"},
    {"din_66003", "iso-ir-21"},
    {"dk", "iso646-dk"},
    {"ds2089", "iso646-dk"},
    {"ds_2089", "iso646-dk"},
    {"e13b", "iso-ir-98"},
    {"ebcdic-be", "cp274"},
    {"ebcdic-br", "cp275"},
    {"ebcdic-cp-ar1", "cp420"},
    {"ebcdic-cp-ar2", "cp918"},
    {"ebcdic-cp-be", "cp500"},
    {"ebcdic-cp-ca", "cp037"},
    {"ebcdic-cp-ch", "cp500"},
    {"ebcdic-cp-dk", "cp277"},
    {"ebcdic-cp-es", "cp284"},
    {"ebcdic-cp-fi", "cp278"},
    {"ebcdic-cp-fr", "cp297"},
    {"ebcdic-cp-gb", "cp285"},
    {"ebcdic-cp-gr", "cp423"},
    {"ebcdic-cp-he", "cp424"},
    {"ebcdic-cp-is", "cp871"},
    {"ebcdic-cp-it", "cp280"},
    {"ebcdic-cp-nl", "cp037"},
    {"ebcdic-cp-no", "cp277"},
    {"ebcdic-cp-roece", "cp870"},
    {"ebcdic-cp-se", "cp278"},
    {"ebcdic-cp-tr", "cp905"},
    {"ebcdic-cp-us", "cp037"},
    {"ebcdic-cp-wt", "cp037"},
    {"ebcdic-cp-yu", "cp870"},
    {"ebcdic-cyrillic", "cp880"},
    {"ebcdic-int", "cp038"},
    {"ebcdic-jp-e", "cp281"},
    {"ebcdic-jp-kana", "cp290"},
    {"ecma-114", "iso-8859-6"},
    {"ecma-118", "iso-8859-7"},
    {"ecma-cyrillic", "iso-ir-111"},
    {"edf04", "osd_ebcdic_df04_1"},
    {"edf04-1", "osd_ebcdic_df04_1"},
    {"edf04-15", "osd_ebcdic_df04_15"},
    {"elot_928", "iso-8859-7"},
    {"es", "iso-ir-17"},
    {"es2", "iso-ir-85"},
    {"fi", "iso-ir-10"},
    {"fr", "iso-ir-69"},
    {"gb", "iso-ir-4"},
    {"gb_1988-80", "iso-ir-57"},
    {"gost_19768-74", "iso-ir-153"},
    {"greek", "iso-8859-7"},
    {"greek-ccitt", "iso-ir-150"},
    {"greek7", "iso-ir-88"},
    {"greek7-old", "iso-ir-18"},
    {"greek8", "iso-8859-7"},
    {"hebrew", "iso-8859-8"},
    {"hu", "iso-ir-86"},
    {"ibm037", "cp037"},
    {"ibm038", "cp038"},
    {"ibm1026", "cp1026"},
    {"ibm273", "cp273"},
    {"ibm274", "cp274"},
    {"ibm275", "cp275"},
    {"ibm277", "cp277"},
    {"ibm278", "cp278"},
    {"ibm280", "cp280"},
    {"ibm281", "cp281"},
    {"ibm284", "cp284"},
    {"ibm285", "cp285"},
    {"ibm290", "cp290"},
    {"ibm297", "cp297"},
    {"ibm367", "us-ascii"},
    {"ibm420", "cp420"},
    {"ibm423", "cp423"},
    {"ibm424", "cp424"},
    {"ibm437", "cp437"},
    {"ibm500", "cp500"},
    {"ibm737", "cp737"},
    {"ibm775", "cp775"},
    {"ibm819", "iso-8859-1"},
    {"ibm850", "cp850"},
    {"ibm851", "cp851"},
    {"ibm852", "cp852"},
    {"ibm855", "cp855"},
    {"ibm857", "cp857"},
    {"ibm860", "cp860"},
    {"ibm861", "cp861"},
    {"ibm862", "cp862"},
    {"ibm863", "cp863"},
    {"ibm864", "cp864"},
    {"ibm865", "cp865"},
    {"ibm866", "cp866"},
    {"ibm868", "cp868"},
    {"ibm869", "cp869"},
    {"ibm870", "cp870"},
    {"ibm871", "cp871"},
    {"ibm874", "cp874"},
    {"ibm880", "cp880"},
    {"ibm891", "cp891"},
    {"ibm903", "cp903"},
    {"ibm904", "cp904"},
    {"ibm905", "cp905"},
    {"ibm918", "cp918"},
    {"iec_p27-1", "iso-ir-143"},
    {"inis", "iso-ir-49"},
    {"inis-8", "iso-ir-50"},
    {"inis-cyrillic", "iso-ir-51"},
    {"irv", "iso-ir-2"},
    {"iso-ir-100", "iso-8859-1"},
    {"iso-ir-101", "iso-8859-2"},
    {"iso-ir-109", "iso-8859-3"},
    {"iso-ir-110", "iso-8859-4"},
    {"iso-ir-126", "iso-8859-7"},
    {"iso-ir-127", "iso-8859-6"},
    {"iso-ir-138", "iso-8859-8"},
    {"iso-ir-144", "iso-8859-5"},
    {"iso-ir-148", "iso-8859-9"},
    {"iso-ir-157", "iso-8859-10"},
    {"iso-ir-58", "gb_2312-80"},
    {"iso-ir-87", "jis_x0208-1983"},
    {"iso646-ca", "iso-ir-121"},
    {"iso646-ca2", "iso-ir-122"},
    {"iso646-cu", "iso-ir-151"},
    {"iso646-de", "iso-ir-21"},
    {"iso646-es", "iso-ir-17"},
    {"iso646-es2", "iso-ir-85"},
    {"iso646-fi", "iso-ir-10"},
    {"iso646-fr", "iso-ir-69"},
    {"iso646-fr1", "iso-ir-25"},
    {"iso646-gb", "iso-ir-4"},
    {"iso646-hu", "iso-ir-86"},
    {"iso646-it", "iso-ir-15"},
    {"iso646-jp", "iso-ir-14"},
    {"iso646-jp-ocr-a", "iso-ir-91"},
    {"iso646-jp-ocr-b", "iso-ir-92"},
    {"iso646-no", "iso-ir-60"},
    {"iso646-no2", "iso-ir-61"},
    {"iso646-pt", "iso-ir-16"},
    {"iso646-pt2", "iso-ir-84"},
    {"iso646-se", "iso-ir-10"},
    {"iso646-se2", "iso-ir-11"},
    {"iso646-us", "us-ascii"},
    {"iso646-yu", "iso-ir-141"},
    {"iso8859-1", "iso-8859-1"}, /*name "ISO8859-1" is used by httpd-2.0*/
    {"iso8859-10", "iso-8859-10"},
    {"iso8859-13", "iso-8859-13"},
    {"iso8859-14", "iso-8859-14"},
    {"iso8859-15", "iso-8859-15"},
    {"iso8859-2", "iso-8859-2"},
    {"iso8859-3", "iso-8859-3"},
    {"iso8859-4", "iso-8859-4"},
    {"iso8859-5", "iso-8859-5"},
    {"iso8859-6", "iso-8859-6"},
    {"iso8859-7", "iso-8859-7"},
    {"iso8859-8", "iso-8859-8"},
    {"iso8859-9", "iso-8859-9"},
    {"iso_10367-box", "iso-ir-155"},
    {"iso_2033-1983", "iso-ir-98"},
    {"iso_5427", "iso-ir-37"},
    {"iso_5427:1981", "iso-ir-54"},
    {"iso_5428:1980", "iso-ir-55"},
    {"iso_646.irv:1983", "iso-ir-2"},
    {"iso_646.irv:1991", "us-ascii"},
    {"iso_6937-2-25", "iso-ir-152"},
    {"iso_6937-2-add", "iso-ir-142"},
    {"iso_8859-1", "iso-8859-1"},
    {"iso_8859-10", "iso-8859-10"},
    {"iso_8859-10:1992", "iso-8859-10"},
    {"iso_8859-13", "iso-8859-13"},
    {"iso_8859-13:1998", "iso-8859-13"},
    {"iso_8859-14", "iso-8859-14"},
    {"iso_8859-14:1998", "iso-8859-14"},
    {"iso_8859-15", "iso-8859-15"},
    {"iso_8859-15:1998", "iso-8859-15"},
    {"iso_8859-1:1987", "iso-8859-1"},
    {"iso_8859-2", "iso-8859-2"},
    {"iso_8859-2:1987", "iso-8859-2"},
    {"iso_8859-3", "iso-8859-3"},
    {"iso_8859-3:1988", "iso-8859-3"},
    {"iso_8859-4", "iso-8859-4"},
    {"iso_8859-4:1988", "iso-8859-4"},
    {"iso_8859-5", "iso-8859-5"},
    {"iso_8859-5:1988", "iso-8859-5"},
    {"iso_8859-6", "iso-8859-6"},
    {"iso_8859-6:1987", "iso-8859-6"},
    {"iso_8859-7", "iso-8859-7"},
    {"iso_8859-7:1987", "iso-8859-7"},
    {"iso_8859-8", "iso-8859-8"},
    {"iso_8859-8:1988", "iso-8859-8"},
    {"iso_8859-9", "iso-8859-9"},
    {"iso_8859-9:1989", "iso-8859-9"},
    {"iso_8859-supp", "iso-ir-154"},
    {"iso_9036", "iso-ir-89"},
    {"it", "iso-ir-15"},
    {"jis_c6220-1969", "iso-ir-13"},
    {"jis_c6220-1969-jp", "iso-ir-13"},
    {"jis_c6220-1969-ro", "iso-ir-14"},
    {"jis_c6226-1983", "jis_x0208-1983"},
    {"jis_c6229-1984-a", "iso-ir-91"},
    {"jis_c6229-1984-b", "iso-ir-92"},
    {"jis_c6229-1984-b-add", "iso-ir-93"},
    {"jis_c6229-1984-hand", "iso-ir-94"},
    {"jis_c6229-1984-hand-add", "iso-ir-95"},
    {"jis_c6229-1984-kana", "iso-ir-96"},
    {"jp", "iso-ir-14"},
    {"jp-ocr-a", "iso-ir-91"},
    {"jp-ocr-b", "iso-ir-92"},
    {"jp-ocr-b-add", "iso-ir-93"},
    {"jp-ocr-hand", "iso-ir-94"},
    {"jp-ocr-hand-add", "iso-ir-95"},
    {"js", "iso-ir-141"},
    {"jus_i.b1.002", "iso-ir-141"},
    {"jus_i.b1.003-mac", "iso-ir-147"},
    {"jus_i.b1.003-serb", "iso-ir-146"},
    {"katakana", "iso-ir-13"},
    {"ks_x_1001", "ksx1001"},
    {"ksc5636", "iso646-kr"},
    {"l1", "iso-8859-1"},
    {"l2", "iso-8859-2"},
    {"l3", "iso-8859-3"},
    {"l4", "iso-8859-4"},
    {"l5", "iso-8859-9"},
    {"l6", "iso-8859-10"},
    {"lap", "iso-ir-158"},
    {"latin-greek", "iso-ir-19"},
    {"latin-greek-1", "iso-ir-27"},
    {"latin-lap", "iso-ir-158"},
    {"latin1", "iso-8859-1"},
    {"latin1-2-5", "iso-ir-154"},
    {"latin2", "iso-8859-2"},
    {"latin3", "iso-8859-3"},
    {"latin4", "iso-8859-4"},
    {"latin5", "iso-8859-9"},
    {"latin6", "iso-8859-10"},
    {"mac", "macintosh"},
    {"maccenteuro", "mac-ce"},
    {"maccroatian", "mac-croatian"},
    {"maccyrillic", "mac-cyrillic"},
    {"macdingbats", "mac-dingbats"},
    {"macedonian", "iso-ir-147"},
    {"macgreek", "mac-greek"},
    {"maciceland", "mac-iceland"},
    {"macroman", "mac-roman"},
    {"macromania", "mac-romania"},
    {"macthai", "mac-thai"},
    {"macturkish", "mac-turkish"},
    {"macukraine", "mac-ukraine"},
    {"ms_kanji", "shift_jis"},
    {"msz_7795.3", "iso-ir-86"},
    {"naplps", "iso-ir-99"},
    {"nats-dano", "iso-ir-9-1"},
    {"nats-dano-add", "iso-ir-9-2"},
    {"nats-sefi", "iso-ir-8-1"},
    {"nats-sefi-add", "iso-ir-8-2"},
    {"nc_nc00-10:81", "iso-ir-151"},
    {"nf_z_62-010", "iso-ir-69"},
    {"nf_z_62-010_(1973)", "iso-ir-25"},
    {"no", "iso-ir-60"},
    {"no2", "iso-ir-61"},
    {"ns_4551-1", "iso-ir-60"},
    {"ns_4551-2", "iso-ir-61"},
    {"pt", "iso-ir-16"},
    {"pt2", "iso-ir-84"},
    {"r8", "hp-roman8"},
    {"roman8", "hp-roman8"},
    {"se", "iso-ir-10"},
    {"se2", "iso-ir-11"},
    {"sen_850200_b", "iso-ir-10"},
    {"sen_850200_c", "iso-ir-11"},
    {"serbian", "iso-ir-146"},
    {"st_sev_358-88", "iso-ir-153"},
    {"t.101-g2", "iso-ir-128"},
    {"t.61", "iso-ir-103"},
    {"t.61-7bit", "iso-ir-102"},
    {"t.61-8bit", "iso-ir-103"},
    {"uk", "iso-ir-4"},
    {"us", "us-ascii"},
    {"utf-7", "unicode-1-1-utf-7"},
    {"videotex-suppl", "iso-ir-70"},
    {"x0201", "jis_x0201"},
    {"x0201-7", "iso-ir-13"},
    {"x0208", "jis_x0208-1983"},
    {"yu", "iso-ir-141"},
    {NULL, NULL} };

static const size_t charset_alias_count =
    sizeof(charset_alias_list)/sizeof(charset_alias_list[0]) - 1;

/* Compare two aliases. */
static int charset_alias_compare (const void *u, const void *v)
{
    const struct charset_alias *const a = u;
    const struct charset_alias *const b = v;
    return strcmp(a->name, b->name);
}

/* Look up an alias in the sorted table and return its name,
   or NULL if it's not in the table. */
static const char *charset_alias_find (const char *name)
{
    struct charset_alias key;
    struct charset_alias *alias;
#if 'A' == '\xC1' /* if EBCDIC host */
    /* The table is sorted in ASCII collation order, not in EBCDIC order.
     * At the first access, we sort it automatically
     * Criterion for the 1st time initialization is the fact that the
     * 1st name in the list starts with a digit (in ASCII, numbers
     * have a lower ordinal value than alphabetic characters; while
     * in EBCDIC, their ordinal value is higher)
     */
    if (isdigit(charset_alias_list[0].name[0]))  {
        qsort((void *)charset_alias_list, charset_alias_count,
	      sizeof(charset_alias_list[0]),
	      charset_alias_compare);
    }
#endif
    key.name = name;
    alias = bsearch(&key, charset_alias_list, charset_alias_count,
                    sizeof(charset_alias_list[0]),
                    charset_alias_compare);
    if (alias)
        return alias->target;
    else
        return NULL;
}

#endif /* API_HAVE_CHARSET_ALIAS_TABLE */
