cat <<EOF | gperf -Ncharset_canonicalize_aux -m16 -l -E -t -C -F", NULL" | sed -e '/__gnu_inline__/d;s/\<\(__\|\)inline\>//g'
%{
/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or (at
 *  your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful, but
 *  WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 *  MA 02110-1301, USA.
 *
 *  Copyright © 2006 Pierre Habouzit
 */

/*
 * The following list has been created manually from the data under:
 * http://www.isi.edu/in-notes/iana/assignments/character-sets
 * Last update: 2000-09-07
 *
 * Note that it includes only the subset of character sets for which
 * a preferred MIME name is given.
 *
 * the corespondance tries to resume from any brain dead way to write the
 * encoding name, hence you have to pass a charset stripped from its '-' and
 * '_' and truncated at the first ':' encountered.
 */

static const struct cset_pair *
charset_canonicalize_aux(const char *str, unsigned int len);
%}
struct cset_pair { const char *name; const char *pref; };
%%
ansix3.41968, "us-ascii"
arabic, "iso-8859-6"
ascii, "us-ascii"
asmo708, "iso-8859-6"
cp367, "us-ascii"
cp819, "iso-8859-1"
csascii, "us-ascii"
csbig5, "big5"
cseuckr, "euc-kr"
cseucpkdfmtjapanese, "euc-jp"
csgb2312, "gb2312"
csiso2022jp2, "iso-2022-jp-2"
csiso2022jp, "iso-2022-jp"
csiso2022kr, "iso-2022-kr"
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, "iso8859-5"
csisolatingreek, "iso-8859-7"
csisolatinhebrew, "iso-8859-8"
cskoi8r, "koi8-r"
csshiftjis, "shift_jis"
cyrillic, "iso-8859-5"
ecma114, "iso-8859-6"
ecma118, "iso-8859-7"
elot928, "iso-8859-7"
eucjp, "euc-jp"
eucjpms, "eucjp-ms"
extendedunixcodepackedformatforjapanese, "euc-jp"
greek8, "iso-8859-7"
greek, "iso-8859-7"
hebrew, "iso-8859-8"
ibm367, "us-ascii"
ibm819, "iso-8859-1"
iso646.irv, "us-ascii"
iso646us, "us-ascii"
iso885910, "iso-8859-10"
iso885913, "iso-8859-13"
iso885914, "iso-8859-14"
iso885915, "iso-8859-15"
iso885916, "iso-8859-16"
iso88591, "iso-8859-1"
iso88592, "iso-8859-2"
iso88593, "iso-8859-3"
iso88594, "iso-8859-4"
iso88595, "iso-8859-5"
iso88596, "iso-8859-6"
iso88597, "iso-8859-7"
iso88598, "iso-8859-8"
iso88599, "iso-8859-9"
isoir100, "iso-8859-1"
isoir101, "iso-8859-2"
isoir109, "iso-8859-3"
isoir110, "iso-8859-4"
isoir126, "iso-8859-7"
isoir127, "iso-8859-6"
isoir138, "iso-8859-8"
isoir144, "iso-8859-5"
isoir148, "iso-8859-9"
isoir157, "iso-8859-10"
isoir179, "iso-8859-13"
isoir6, "us-ascii"
kokreuc, "euc-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"
l7, "iso-8859-13"
l8, "iso-8859-14"
latin0, "iso-8859-15"
latin1, "iso-8859-1"
latin2, "iso-8859-2"
latin3, "iso-8859-3"
latin4, "iso-8859-4"
latin5, "iso-8859-9"
latin6, "iso-8859-10"
latin7, "iso-8859-13"
latin8, "iso-8859-14"
latin9, "iso-8859-15"
latin10, "iso-8859-16"
mskanji, "shift_jis"
pck, "shift_jis"
sjis, "shift_jis"
us, "us-ascii"
utf8, "utf-8"
zhtwbig5, "big5"
646, "us-ascii"
%%
// vim:set ft=lex:
EOF
