#! /bin/sh
# Output a system dependent table of character encoding aliases.
#
#   Copyright (C) 2000-2004, 2006-2012 Free Software Foundation, Inc.
#
#   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 3, 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, see <http://www.gnu.org/licenses/>.
#
# 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
#                                    (darwin = Mac OS X, woe32 = native Windows)
#
#   ASCII, ANSI_X3.4-1968       glibc solaris freebsd netbsd darwin cygwin
#   ISO-8859-1              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
#   ISO-8859-2              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
#   ISO-8859-3              Y   glibc solaris cygwin
#   ISO-8859-4              Y   osf solaris freebsd netbsd openbsd darwin
#   ISO-8859-5              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
#   ISO-8859-6              Y   glibc aix hpux solaris cygwin
#   ISO-8859-7              Y   glibc aix hpux irix osf solaris netbsd openbsd darwin cygwin
#   ISO-8859-8              Y   glibc aix hpux osf solaris cygwin
#   ISO-8859-9              Y   glibc aix hpux irix osf solaris darwin cygwin
#   ISO-8859-13                 glibc netbsd openbsd darwin cygwin
#   ISO-8859-14                 glibc cygwin
#   ISO-8859-15                 glibc aix osf solaris freebsd netbsd openbsd darwin cygwin
#   KOI8-R                  Y   glibc solaris freebsd netbsd openbsd darwin
#   KOI8-U                  Y   glibc freebsd netbsd openbsd darwin cygwin
#   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 cygwin 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 cygwin 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 cygwin
#   EUC-TW                      glibc aix hpux irix osf solaris netbsd
#   BIG5                    Y   glibc aix hpux osf solaris freebsd netbsd darwin cygwin
#   BIG5-HKSCS                  glibc solaris darwin
#   GBK                         glibc aix osf solaris darwin cygwin 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 cygwin
#   VISCII                  Y   glibc
#   TCVN5712-1                  glibc
#   ARMSCII-8                   glibc darwin
#   GEORGIAN-PS                 glibc cygwin
#   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 cygwin
#
# 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
