#! /bin/sh
# Output a system dependent table of character encoding aliases.
#
#   Copyright (C) 2000-2004, 2006-2009 Free Software Foundation, Inc.
#
#   This program is free software; you can redistribute it and/or modify it
#   under the terms of the GNU Library General Public License as published
#   by the Free Software Foundation; either version 2, 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
#   Library General Public License for more details.
#
#   You should have received a copy of the GNU Library 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.
#
# The table consists of lines of the form
#    ALIAS  CANONICAL
#
# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)".
# ALIAS is compared in a case sensitive way.
#
# CANONICAL is the GNU canonical name for this character encoding.
# It must be an encoding supported by libiconv. Support by GNU libc is
# also desirable. CANONICAL is case insensitive. Usually an upper case
# MIME charset name is preferred.
# The current list of GNU canonical charset names is as follows.
#
#       name              MIME?             used by which systems
#   ASCII, ANSI_X3.4-1968       glibc solaris freebsd netbsd darwin
#   ISO-8859-1              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin
#   ISO-8859-2              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin
#   ISO-8859-3              Y   glibc solaris
#   ISO-8859-4              Y   osf solaris freebsd netbsd openbsd darwin
#   ISO-8859-5              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin
#   ISO-8859-6              Y   glibc aix hpux solaris
#   ISO-8859-7              Y   glibc aix hpux irix osf solaris netbsd openbsd darwin
#   ISO-8859-8              Y   glibc aix hpux osf solaris
#   ISO-8859-9              Y   glibc aix hpux irix osf solaris darwin
#   ISO-8859-13                 glibc netbsd openbsd darwin
#   ISO-8859-14                 glibc
#   ISO-8859-15                 glibc aix osf solaris freebsd netbsd openbsd darwin
#   KOI8-R                  Y   glibc solaris freebsd netbsd openbsd darwin
#   KOI8-U                  Y   glibc freebsd netbsd openbsd darwin
#   KOI8-T                      glibc
#   CP437                       dos
#   CP775                       dos
#   CP850                       aix osf dos
#   CP852                       dos
#   CP855                       dos
#   CP856                       aix
#   CP857                       dos
#   CP861                       dos
#   CP862                       dos
#   CP864                       dos
#   CP865                       dos
#   CP866                       freebsd netbsd openbsd darwin dos
#   CP869                       dos
#   CP874                       woe32 dos
#   CP922                       aix
#   CP932                       aix woe32 dos
#   CP943                       aix
#   CP949                       osf darwin woe32 dos
#   CP950                       woe32 dos
#   CP1046                      aix
#   CP1124                      aix
#   CP1125                      dos
#   CP1129                      aix
#   CP1131                      darwin
#   CP1250                      woe32
#   CP1251                      glibc solaris netbsd openbsd darwin woe32
#   CP1252                      aix woe32
#   CP1253                      woe32
#   CP1254                      woe32
#   CP1255                      glibc woe32
#   CP1256                      woe32
#   CP1257                      woe32
#   GB2312                  Y   glibc aix hpux irix solaris freebsd netbsd darwin
#   EUC-JP                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin
#   EUC-KR                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin
#   EUC-TW                      glibc aix hpux irix osf solaris netbsd
#   BIG5                    Y   glibc aix hpux osf solaris freebsd netbsd darwin
#   BIG5-HKSCS                  glibc solaris darwin
#   GBK                         glibc aix osf solaris darwin woe32 dos
#   GB18030                     glibc solaris netbsd darwin
#   SHIFT_JIS               Y   hpux osf solaris freebsd netbsd darwin
#   JOHAB                       glibc solaris woe32
#   TIS-620                     glibc aix hpux osf solaris
#   VISCII                  Y   glibc
#   TCVN5712-1                  glibc
#   ARMSCII-8                   glibc darwin
#   GEORGIAN-PS                 glibc
#   PT154                       glibc
#   HP-ROMAN8                   hpux
#   HP-ARABIC8                  hpux
#   HP-GREEK8                   hpux
#   HP-HEBREW8                  hpux
#   HP-TURKISH8                 hpux
#   HP-KANA8                    hpux
#   DEC-KANJI                   osf
#   DEC-HANYU                   osf
#   UTF-8                   Y   glibc aix hpux osf solaris netbsd darwin
#
# Note: Names which are not marked as being a MIME name should not be used in
# Internet protocols for information interchange (mail, news, etc.).
#
# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications
# must understand both names and treat them as equivalent.
#
# The first argument passed to this file is the canonical host specification,
#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
# or
#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM

host="$1"
os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'`
echo "# This file contains a table of character encoding aliases,"
echo "# suitable for operating system '${os}'."
echo "# It was automatically generated from config.charset."
# List of references, updated during installation:
echo "# Packages using this file: "
case "$os" in
    linux-gnulibc1*)
	# Linux libc5 doesn't have nl_langinfo(CODESET); therefore
	# localcharset.c falls back to using the full locale name
	# from the environment variables.
	echo "C ASCII"
	echo "POSIX ASCII"
	for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \
	         en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \
	         en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \
	         es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \
	         et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \
	         fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \
	         it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \
	         sv_FI sv_SE; do
	  echo "$l ISO-8859-1"
	  echo "$l.iso-8859-1 ISO-8859-1"
	  echo "$l.iso-8859-15 ISO-8859-15"
	  echo "$l.iso-8859-15@euro ISO-8859-15"
	  echo "$l@euro ISO-8859-15"
	  echo "$l.cp-437 CP437"
	  echo "$l.cp-850 CP850"
	  echo "$l.cp-1252 CP1252"
	  echo "$l.cp-1252@euro CP1252"
	  #echo "$l.atari-st ATARI-ST" # not a commonly used encoding
	  echo "$l.utf-8 UTF-8"
	  echo "$l.utf-8@euro UTF-8"
	done
	for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \
	         sl_SI sr sr_CS sr_YU; do
	  echo "$l ISO-8859-2"
	  echo "$l.iso-8859-2 ISO-8859-2"
	  echo "$l.cp-852 CP852"
	  echo "$l.cp-1250 CP1250"
	  echo "$l.utf-8 UTF-8"
	done
	for l in mk mk_MK ru ru_RU; do
	  echo "$l ISO-8859-5"
	  echo "$l.iso-8859-5 ISO-8859-5"
	  echo "$l.koi8-r KOI8-R"
	  echo "$l.cp-866 CP866"
	  echo "$l.cp-1251 CP1251"
	  echo "$l.utf-8 UTF-8"
	done
	for l in ar ar_SA; do
	  echo "$l ISO-8859-6"
	  echo "$l.iso-8859-6 ISO-8859-6"
	  echo "$l.cp-864 CP864"
	  #echo "$l.cp-868 CP868" # not a commonly used encoding
	  echo "$l.cp-1256 CP1256"
	  echo "$l.utf-8 UTF-8"
	done
	for l in el el_GR gr gr_GR; do
	  echo "$l ISO-8859-7"
	  echo "$l.iso-8859-7 ISO-8859-7"
	  echo "$l.cp-869 CP869"
	  echo "$l.cp-1253 CP1253"
	  echo "$l.cp-1253@euro CP1253"
	  echo "$l.utf-8 UTF-8"
	  echo "$l.utf-8@euro UTF-8"
	done
	for l in he he_IL iw iw_IL; do
	  echo "$l ISO-8859-8"
	  echo "$l.iso-8859-8 ISO-8859-8"
	  echo "$l.cp-862 CP862"
	  echo "$l.cp-1255 CP1255"
	  echo "$l.utf-8 UTF-8"
	done
	for l in tr tr_TR; do
	  echo "$l ISO-8859-9"
	  echo "$l.iso-8859-9 ISO-8859-9"
	  echo "$l.cp-857 CP857"
	  echo "$l.cp-1254 CP1254"
	  echo "$l.utf-8 UTF-8"
	done
	for l in lt lt_LT lv lv_LV; do
	  #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name
	  echo "$l ISO-8859-13"
	done
	for l in ru_UA uk uk_UA; do
	  echo "$l KOI8-U"
	done
	for l in zh zh_CN; do
	  #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name
	  echo "$l GB2312"
	done
	for l in ja ja_JP ja_JP.EUC; do
	  echo "$l EUC-JP"
	done
	for l in ko ko_KR; do
	  echo "$l EUC-KR"
	done
	for l in th th_TH; do
	  echo "$l TIS-620"
	done
	for l in fa fa_IR; do
	  #echo "$l ISIRI-3342" # a broken encoding
	  echo "$l.utf-8 UTF-8"
	done
	;;
    linux* | *-gnu*)
	# With glibc-2.1 or newer, we don't need any canonicalization,
	# because glibc has iconv and both glibc and libiconv support all
	# GNU canonical names directly. Therefore, the Makefile does not
	# need to install the alias file at all.
	# The following applies only to glibc-2.0.x and older libcs.
	echo "ISO_646.IRV:1983 ASCII"
	;;
    aix*)
	echo "ISO8859-1 ISO-8859-1"
	echo "ISO8859-2 ISO-8859-2"
	echo "ISO8859-5 ISO-8859-5"
	echo "ISO8859-6 ISO-8859-6"
	echo "ISO8859-7 ISO-8859-7"
	echo "ISO8859-8 ISO-8859-8"
	echo "ISO8859-9 ISO-8859-9"
	echo "ISO8859-15 ISO-8859-15"
	echo "IBM-850 CP850"
	echo "IBM-856 CP856"
	echo "IBM-921 ISO-8859-13"
	echo "IBM-922 CP922"
	echo "IBM-932 CP932"
	echo "IBM-943 CP943"
	echo "IBM-1046 CP1046"
	echo "IBM-1124 CP1124"
	echo "IBM-1129 CP1129"
	echo "IBM-1252 CP1252"
	echo "IBM-eucCN GB2312"
	echo "IBM-eucJP EUC-JP"
	echo "IBM-eucKR EUC-KR"
	echo "IBM-eucTW EUC-TW"
	echo "big5 BIG5"
	echo "GBK GBK"
	echo "TIS-620 TIS-620"
	echo "UTF-8 UTF-8"
	;;
    hpux*)
	echo "iso88591 ISO-8859-1"
	echo "iso88592 ISO-8859-2"
	echo "iso88595 ISO-8859-5"
	echo "iso88596 ISO-8859-6"
	echo "iso88597 ISO-8859-7"
	echo "iso88598 ISO-8859-8"
	echo "iso88599 ISO-8859-9"
	echo "iso885915 ISO-8859-15"
	echo "roman8 HP-ROMAN8"
	echo "arabic8 HP-ARABIC8"
	echo "greek8 HP-GREEK8"
	echo "hebrew8 HP-HEBREW8"
	echo "turkish8 HP-TURKISH8"
	echo "kana8 HP-KANA8"
	echo "tis620 TIS-620"
	echo "big5 BIG5"
	echo "eucJP EUC-JP"
	echo "eucKR EUC-KR"
	echo "eucTW EUC-TW"
	echo "hp15CN GB2312"
	#echo "ccdc ?" # what is this?
	echo "SJIS SHIFT_JIS"
	echo "utf8 UTF-8"
	;;
    irix*)
	echo "ISO8859-1 ISO-8859-1"
	echo "ISO8859-2 ISO-8859-2"
	echo "ISO8859-5 ISO-8859-5"
	echo "ISO8859-7 ISO-8859-7"
	echo "ISO8859-9 ISO-8859-9"
	echo "eucCN GB2312"
	echo "eucJP EUC-JP"
	echo "eucKR EUC-KR"
	echo "eucTW EUC-TW"
	;;
    osf*)
	echo "ISO8859-1 ISO-8859-1"
	echo "ISO8859-2 ISO-8859-2"
	echo "ISO8859-4 ISO-8859-4"
	echo "ISO8859-5 ISO-8859-5"
	echo "ISO8859-7 ISO-8859-7"
	echo "ISO8859-8 ISO-8859-8"
	echo "ISO8859-9 ISO-8859-9"
	echo "ISO8859-15 ISO-8859-15"
	echo "cp850 CP850"
	echo "big5 BIG5"
	echo "dechanyu DEC-HANYU"
	echo "dechanzi GB2312"
	echo "deckanji DEC-KANJI"
	echo "deckorean EUC-KR"
	echo "eucJP EUC-JP"
	echo "eucKR EUC-KR"
	echo "eucTW EUC-TW"
	echo "GBK GBK"
	echo "KSC5601 CP949"
	echo "sdeckanji EUC-JP"
	echo "SJIS SHIFT_JIS"
	echo "TACTIS TIS-620"
	echo "UTF-8 UTF-8"
	;;
    solaris*)
	echo "646 ASCII"
	echo "ISO8859-1 ISO-8859-1"
	echo "ISO8859-2 ISO-8859-2"
	echo "ISO8859-3 ISO-8859-3"
	echo "ISO8859-4 ISO-8859-4"
	echo "ISO8859-5 ISO-8859-5"
	echo "ISO8859-6 ISO-8859-6"
	echo "ISO8859-7 ISO-8859-7"
	echo "ISO8859-8 ISO-8859-8"
	echo "ISO8859-9 ISO-8859-9"
	echo "ISO8859-15 ISO-8859-15"
	echo "koi8-r KOI8-R"
	echo "ansi-1251 CP1251"
	echo "BIG5 BIG5"
	echo "Big5-HKSCS BIG5-HKSCS"
	echo "gb2312 GB2312"
	echo "GBK GBK"
	echo "GB18030 GB18030"
	echo "cns11643 EUC-TW"
	echo "5601 EUC-KR"
	echo "ko_KR.johap92 JOHAB"
	echo "eucJP EUC-JP"
	echo "PCK SHIFT_JIS"
	echo "TIS620.2533 TIS-620"
	#echo "sun_eu_greek ?" # what is this?
	echo "UTF-8 UTF-8"
	;;
    freebsd* | os2*)
	# FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
	# localcharset.c falls back to using the full locale name
	# from the environment variables.
	# Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
	# reuse FreeBSD's locale data for OS/2.
	echo "C ASCII"
	echo "US-ASCII ASCII"
	for l in la_LN lt_LN; do
	  echo "$l.ASCII ASCII"
	done
	for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
	         fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
	         lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
	  echo "$l.ISO_8859-1 ISO-8859-1"
	  echo "$l.DIS_8859-15 ISO-8859-15"
	done
	for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
	  echo "$l.ISO_8859-2 ISO-8859-2"
	done
	for l in la_LN lt_LT; do
	  echo "$l.ISO_8859-4 ISO-8859-4"
	done
	for l in ru_RU ru_SU; do
	  echo "$l.KOI8-R KOI8-R"
	  echo "$l.ISO_8859-5 ISO-8859-5"
	  echo "$l.CP866 CP866"
	done
	echo "uk_UA.KOI8-U KOI8-U"
	echo "zh_TW.BIG5 BIG5"
	echo "zh_TW.Big5 BIG5"
	echo "zh_CN.EUC GB2312"
	echo "ja_JP.EUC EUC-JP"
	echo "ja_JP.SJIS SHIFT_JIS"
	echo "ja_JP.Shift_JIS SHIFT_JIS"
	echo "ko_KR.EUC EUC-KR"
	;;
    netbsd*)
	echo "646 ASCII"
	echo "ISO8859-1 ISO-8859-1"
	echo "ISO8859-2 ISO-8859-2"
	echo "ISO8859-4 ISO-8859-4"
	echo "ISO8859-5 ISO-8859-5"
	echo "ISO8859-7 ISO-8859-7"
	echo "ISO8859-13 ISO-8859-13"
	echo "ISO8859-15 ISO-8859-15"
	echo "eucCN GB2312"
	echo "eucJP EUC-JP"
	echo "eucKR EUC-KR"
	echo "eucTW EUC-TW"
	echo "BIG5 BIG5"
	echo "SJIS SHIFT_JIS"
	;;
    openbsd*)
	echo "646 ASCII"
	echo "ISO8859-1 ISO-8859-1"
	echo "ISO8859-2 ISO-8859-2"
	echo "ISO8859-4 ISO-8859-4"
	echo "ISO8859-5 ISO-8859-5"
	echo "ISO8859-7 ISO-8859-7"
	echo "ISO8859-13 ISO-8859-13"
	echo "ISO8859-15 ISO-8859-15"
	;;
    darwin[56]*)
	# Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
	# localcharset.c falls back to using the full locale name
	# from the environment variables.
	echo "C ASCII"
	for l in en_AU en_CA en_GB en_US la_LN; do
	  echo "$l.US-ASCII ASCII"
	done
	for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
	         fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \
	         nl_NL no_NO pt_PT sv_SE; do
	  echo "$l ISO-8859-1"
	  echo "$l.ISO8859-1 ISO-8859-1"
	  echo "$l.ISO8859-15 ISO-8859-15"
	done
	for l in la_LN; do
	  echo "$l.ISO8859-1 ISO-8859-1"
	  echo "$l.ISO8859-15 ISO-8859-15"
	done
	for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do
	  echo "$l.ISO8859-2 ISO-8859-2"
	done
	for l in la_LN lt_LT; do
	  echo "$l.ISO8859-4 ISO-8859-4"
	done
	for l in ru_RU; do
	  echo "$l.KOI8-R KOI8-R"
	  echo "$l.ISO8859-5 ISO-8859-5"
	  echo "$l.CP866 CP866"
	done
	for l in bg_BG; do
	  echo "$l.CP1251 CP1251"
	done
	echo "uk_UA.KOI8-U KOI8-U"
	echo "zh_TW.BIG5 BIG5"
	echo "zh_TW.Big5 BIG5"
	echo "zh_CN.EUC GB2312"
	echo "ja_JP.EUC EUC-JP"
	echo "ja_JP.SJIS SHIFT_JIS"
	echo "ko_KR.EUC EUC-KR"
	;;
    darwin*)
	# Darwin 7.5 has nl_langinfo(CODESET), but sometimes its value is
	# useless:
	# - It returns the empty string when LANG is set to a locale of the
	#   form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8
	#   LC_CTYPE file.
	# - The environment variables LANG, LC_CTYPE, LC_ALL are not set by
	#   the system; nl_langinfo(CODESET) returns "US-ASCII" in this case.
	# - The documentation says:
	#     "... all code that calls BSD system routines should ensure
	#      that the const *char parameters of these routines are in UTF-8
	#      encoding. All BSD system functions expect their string
	#      parameters to be in UTF-8 encoding and nothing else."
	#   It also says
	#     "An additional caveat is that string parameters for files,
	#      paths, and other file-system entities must be in canonical
	#      UTF-8. In a canonical UTF-8 Unicode string, all decomposable
	#      characters are decomposed ..."
	#   but this is not true: You can pass non-decomposed UTF-8 strings
	#   to file system functions, and it is the OS which will convert
	#   them to decomposed UTF-8 before accessing the file system.
	# - The Apple Terminal application displays UTF-8 by default.
	# - However, other applications are free to use different encodings:
	#   - xterm uses ISO-8859-1 by default.
	#   - TextEdit uses MacRoman by default.
	# We prefer UTF-8 over decomposed UTF-8-MAC because one should
	# minimize the use of decomposed Unicode. Unfortunately, through the
	# Darwin file system, decomposed UTF-8 strings are leaked into user
	# space nevertheless.
	# Then there are also the locales with encodings other than US-ASCII
	# and UTF-8. These locales can be occasionally useful to users (e.g.
	# when grepping through ISO-8859-1 encoded text files), when all their
	# file names are in US-ASCII.
	echo "ISO8859-1 ISO-8859-1"
	echo "ISO8859-2 ISO-8859-2"
	echo "ISO8859-4 ISO-8859-4"
	echo "ISO8859-5 ISO-8859-5"
	echo "ISO8859-7 ISO-8859-7"
	echo "ISO8859-9 ISO-8859-9"
	echo "ISO8859-13 ISO-8859-13"
	echo "ISO8859-15 ISO-8859-15"
	echo "KOI8-R KOI8-R"
	echo "KOI8-U KOI8-U"
	echo "CP866 CP866"
	echo "CP949 CP949"
	echo "CP1131 CP1131"
	echo "CP1251 CP1251"
	echo "eucCN GB2312"
	echo "GB2312 GB2312"
	echo "eucJP EUC-JP"
	echo "eucKR EUC-KR"
	echo "Big5 BIG5"
	echo "Big5HKSCS BIG5-HKSCS"
	echo "GBK GBK"
	echo "GB18030 GB18030"
	echo "SJIS SHIFT_JIS"
	echo "ARMSCII-8 ARMSCII-8"
	echo "PT154 PT154"
	#echo "ISCII-DEV ?"
	echo "* UTF-8"
	;;
    beos* | haiku*)
	# BeOS and Haiku have a single locale, and it has UTF-8 encoding.
	echo "* UTF-8"
	;;
    msdosdjgpp*)
	# DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
	# localcharset.c falls back to using the full locale name
	# from the environment variables.
	echo "#"
	echo "# The encodings given here may not all be correct."
	echo "# If you find that the encoding given for your language and"
	echo "# country is not the one your DOS machine actually uses, just"
	echo "# correct it in this file, and send a mail to"
	echo "# Juan Manuel Guerrero <juan.guerrero@gmx.de>"
	echo "# and Bruno Haible <bruno@clisp.org>."
	echo "#"
	echo "C ASCII"
	# ISO-8859-1 languages
	echo "ca CP850"
	echo "ca_ES CP850"
	echo "da CP865"    # not CP850 ??
	echo "da_DK CP865" # not CP850 ??
	echo "de CP850"
	echo "de_AT CP850"
	echo "de_CH CP850"
	echo "de_DE CP850"
	echo "en CP850"
	echo "en_AU CP850" # not CP437 ??
	echo "en_CA CP850"
	echo "en_GB CP850"
	echo "en_NZ CP437"
	echo "en_US CP437"
	echo "en_ZA CP850" # not CP437 ??
	echo "es CP850"
	echo "es_AR CP850"
	echo "es_BO CP850"
	echo "es_CL CP850"
	echo "es_CO CP850"
	echo "es_CR CP850"
	echo "es_CU CP850"
	echo "es_DO CP850"
	echo "es_EC CP850"
	echo "es_ES CP850"
	echo "es_GT CP850"
	echo "es_HN CP850"
	echo "es_MX CP850"
	echo "es_NI CP850"
	echo "es_PA CP850"
	echo "es_PY CP850"
	echo "es_PE CP850"
	echo "es_SV CP850"
	echo "es_UY CP850"
	echo "es_VE CP850"
	echo "et CP850"
	echo "et_EE CP850"
	echo "eu CP850"
	echo "eu_ES CP850"
	echo "fi CP850"
	echo "fi_FI CP850"
	echo "fr CP850"
	echo "fr_BE CP850"
	echo "fr_CA CP850"
	echo "fr_CH CP850"
	echo "fr_FR CP850"
	echo "ga CP850"
	echo "ga_IE CP850"
	echo "gd CP850"
	echo "gd_GB CP850"
	echo "gl CP850"
	echo "gl_ES CP850"
	echo "id CP850"    # not CP437 ??
	echo "id_ID CP850" # not CP437 ??
	echo "is CP861"    # not CP850 ??
	echo "is_IS CP861" # not CP850 ??
	echo "it CP850"
	echo "it_CH CP850"
	echo "it_IT CP850"
	echo "lt CP775"
	echo "lt_LT CP775"
	echo "lv CP775"
	echo "lv_LV CP775"
	echo "nb CP865"    # not CP850 ??
	echo "nb_NO CP865" # not CP850 ??
	echo "nl CP850"
	echo "nl_BE CP850"
	echo "nl_NL CP850"
	echo "nn CP865"    # not CP850 ??
	echo "nn_NO CP865" # not CP850 ??
	echo "no CP865"    # not CP850 ??
	echo "no_NO CP865" # not CP850 ??
	echo "pt CP850"
	echo "pt_BR CP850"
	echo "pt_PT CP850"
	echo "sv CP850"
	echo "sv_SE CP850"
	# ISO-8859-2 languages
	echo "cs CP852"
	echo "cs_CZ CP852"
	echo "hr CP852"
	echo "hr_HR CP852"
	echo "hu CP852"
	echo "hu_HU CP852"
	echo "pl CP852"
	echo "pl_PL CP852"
	echo "ro CP852"
	echo "ro_RO CP852"
	echo "sk CP852"
	echo "sk_SK CP852"
	echo "sl CP852"
	echo "sl_SI CP852"
	echo "sq CP852"
	echo "sq_AL CP852"
	echo "sr CP852"    # CP852 or CP866 or CP855 ??
	echo "sr_CS CP852" # CP852 or CP866 or CP855 ??
	echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
	# ISO-8859-3 languages
	echo "mt CP850"
	echo "mt_MT CP850"
	# ISO-8859-5 languages
	echo "be CP866"
	echo "be_BE CP866"
	echo "bg CP866"    # not CP855 ??
	echo "bg_BG CP866" # not CP855 ??
	echo "mk CP866"    # not CP855 ??
	echo "mk_MK CP866" # not CP855 ??
	echo "ru CP866"
	echo "ru_RU CP866"
	echo "uk CP1125"
	echo "uk_UA CP1125"
	# ISO-8859-6 languages
	echo "ar CP864"
	echo "ar_AE CP864"
	echo "ar_DZ CP864"
	echo "ar_EG CP864"
	echo "ar_IQ CP864"
	echo "ar_IR CP864"
	echo "ar_JO CP864"
	echo "ar_KW CP864"
	echo "ar_MA CP864"
	echo "ar_OM CP864"
	echo "ar_QA CP864"
	echo "ar_SA CP864"
	echo "ar_SY CP864"
	# ISO-8859-7 languages
	echo "el CP869"
	echo "el_GR CP869"
	# ISO-8859-8 languages
	echo "he CP862"
	echo "he_IL CP862"
	# ISO-8859-9 languages
	echo "tr CP857"
	echo "tr_TR CP857"
	# Japanese
	echo "ja CP932"
	echo "ja_JP CP932"
	# Chinese
	echo "zh_CN GBK"
	echo "zh_TW CP950" # not CP938 ??
	# Korean
	echo "kr CP949"    # not CP934 ??
	echo "kr_KR CP949" # not CP934 ??
	# Thai
	echo "th CP874"
	echo "th_TH CP874"
	# Other
	echo "eo CP850"
	echo "eo_EO CP850"
	;;
esac
