From d8448f76cd40595673b2240b1015f0cbb3f36b56 Mon Sep 17 00:00:00 2001 From: Ron Yorston Date: Fri, 14 Feb 2020 11:07:21 +0000 Subject: iconv: code shrink Reduce the size of the codepage alias table by concatenating the alias strings rather than storing pointers to them. Saves 1328 bytes. --- miscutils/iconv.c | 913 +++++++++++++++++++++++++++--------------------------- 1 file changed, 457 insertions(+), 456 deletions(-) diff --git a/miscutils/iconv.c b/miscutils/iconv.c index c3289982d..ce0b2087c 100644 --- a/miscutils/iconv.c +++ b/miscutils/iconv.c @@ -132,458 +132,448 @@ static int iso2022jp_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort static int iso2022jp_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); static int iso2022jp_flush(csconv_t *cv, uchar *buf, int bufsize); -static struct { - int codepage; - const char *name; -} codepage_alias[] = { - {65001, "CP65001"}, - {65001, "UTF8"}, - {65001, "UTF-8"}, - - {1200, "CP1200"}, - {1200, "UTF16LE"}, - {1200, "UTF-16LE"}, - {1200, "UCS2LE"}, - {1200, "UCS-2LE"}, - {1200, "UCS-2-INTERNAL"}, - - {1201, "CP1201"}, - {1201, "UTF16BE"}, - {1201, "UTF-16BE"}, - {1201, "UCS2BE"}, - {1201, "UCS-2BE"}, - {1201, "unicodeFFFE"}, - - {12000, "CP12000"}, - {12000, "UTF32LE"}, - {12000, "UTF-32LE"}, - {12000, "UCS4LE"}, - {12000, "UCS-4LE"}, - - {12001, "CP12001"}, - {12001, "UTF32BE"}, - {12001, "UTF-32BE"}, - {12001, "UCS4BE"}, - {12001, "UCS-4BE"}, - -#ifndef GLIB_COMPILATION - /* - * Default is big endian. - * See rfc2781 4.3 Interpreting text labelled as UTF-16. - */ - {1201, "UTF16"}, - {1201, "UTF-16"}, - {1201, "UCS2"}, - {1201, "UCS-2"}, - {12001, "UTF32"}, - {12001, "UTF-32"}, - {12001, "UCS-4"}, - {12001, "UCS4"}, -#else - /* Default is little endian, because the platform is */ - {1200, "UTF16"}, - {1200, "UTF-16"}, - {1200, "UCS2"}, - {1200, "UCS-2"}, - {12000, "UTF32"}, - {12000, "UTF-32"}, - {12000, "UCS4"}, - {12000, "UCS-4"}, -#endif - - /* copy from libiconv `iconv -l` */ - /* !IsValidCodePage(367) */ - {20127, "ANSI_X3.4-1968"}, - {20127, "ANSI_X3.4-1986"}, - {20127, "ASCII"}, - {20127, "CP367"}, - {20127, "IBM367"}, - {20127, "ISO-IR-6"}, - {20127, "ISO646-US"}, - {20127, "ISO_646.IRV:1991"}, - {20127, "US"}, - {20127, "US-ASCII"}, - {20127, "CSASCII"}, - - /* !IsValidCodePage(819) */ - {1252, "CP819"}, - {1252, "IBM819"}, - {28591, "ISO-8859-1"}, - {28591, "ISO-IR-100"}, - {28591, "ISO8859-1"}, - {28591, "ISO_8859-1"}, - {28591, "ISO_8859-1:1987"}, - {28591, "L1"}, - {28591, "LATIN1"}, - {28591, "CSISOLATIN1"}, - - {1250, "CP1250"}, - {1250, "MS-EE"}, - {1250, "WINDOWS-1250"}, - - {1251, "CP1251"}, - {1251, "MS-CYRL"}, - {1251, "WINDOWS-1251"}, - - {1252, "CP1252"}, - {1252, "MS-ANSI"}, - {1252, "WINDOWS-1252"}, - - {1253, "CP1253"}, - {1253, "MS-GREEK"}, - {1253, "WINDOWS-1253"}, - - {1254, "CP1254"}, - {1254, "MS-TURK"}, - {1254, "WINDOWS-1254"}, - - {1255, "CP1255"}, - {1255, "MS-HEBR"}, - {1255, "WINDOWS-1255"}, - - {1256, "CP1256"}, - {1256, "MS-ARAB"}, - {1256, "WINDOWS-1256"}, - - {1257, "CP1257"}, - {1257, "WINBALTRIM"}, - {1257, "WINDOWS-1257"}, - - {1258, "CP1258"}, - {1258, "WINDOWS-1258"}, - - {850, "850"}, - {850, "CP850"}, - {850, "IBM850"}, - {850, "CSPC850MULTILINGUAL"}, - - /* !IsValidCodePage(862) */ - {862, "862"}, - {862, "CP862"}, - {862, "IBM862"}, - {862, "CSPC862LATINHEBREW"}, - - {866, "866"}, - {866, "CP866"}, - {866, "IBM866"}, - {866, "CSIBM866"}, - - /* !IsValidCodePage(154) */ - {154, "CP154"}, - {154, "CYRILLIC-ASIAN"}, - {154, "PT154"}, - {154, "PTCP154"}, - {154, "CSPTCP154"}, - - /* !IsValidCodePage(1133) */ - {1133, "CP1133"}, - {1133, "IBM-CP1133"}, - - {874, "CP874"}, - {874, "WINDOWS-874"}, - - /* !IsValidCodePage(51932) */ - {51932, "CP51932"}, - {51932, "MS51932"}, - {51932, "WINDOWS-51932"}, - {51932, "EUC-JP"}, - - {932, "CP932"}, - {932, "MS932"}, - {932, "SHIFFT_JIS"}, - {932, "SHIFFT_JIS-MS"}, - {932, "SJIS"}, - {932, "SJIS-MS"}, - {932, "SJIS-OPEN"}, - {932, "SJIS-WIN"}, - {932, "WINDOWS-31J"}, - {932, "WINDOWS-932"}, - {932, "CSWINDOWS31J"}, - - {50221, "CP50221"}, - {50221, "ISO-2022-JP"}, - {50221, "ISO-2022-JP-MS"}, - {50221, "ISO2022-JP"}, - {50221, "ISO2022-JP-MS"}, - {50221, "MS50221"}, - {50221, "WINDOWS-50221"}, - - {936, "CP936"}, - {936, "GBK"}, - {936, "MS936"}, - {936, "WINDOWS-936"}, - - {950, "CP950"}, - {950, "BIG5"}, - {950, "BIG5HKSCS"}, - {950, "BIG5-HKSCS"}, - - {949, "CP949"}, - {949, "UHC"}, - {949, "EUC-KR"}, - - {1361, "CP1361"}, - {1361, "JOHAB"}, - - {437, "437"}, - {437, "CP437"}, - {437, "IBM437"}, - {437, "CSPC8CODEPAGE437"}, - - {737, "CP737"}, - - {775, "CP775"}, - {775, "IBM775"}, - {775, "CSPC775BALTIC"}, - - {852, "852"}, - {852, "CP852"}, - {852, "IBM852"}, - {852, "CSPCP852"}, - - /* !IsValidCodePage(853) */ - {853, "CP853"}, - - {855, "855"}, - {855, "CP855"}, - {855, "IBM855"}, - {855, "CSIBM855"}, - - {857, "857"}, - {857, "CP857"}, - {857, "IBM857"}, - {857, "CSIBM857"}, - - /* !IsValidCodePage(858) */ - {858, "CP858"}, - - {860, "860"}, - {860, "CP860"}, - {860, "IBM860"}, - {860, "CSIBM860"}, - - {861, "861"}, - {861, "CP-IS"}, - {861, "CP861"}, - {861, "IBM861"}, - {861, "CSIBM861"}, - - {863, "863"}, - {863, "CP863"}, - {863, "IBM863"}, - {863, "CSIBM863"}, - - {864, "CP864"}, - {864, "IBM864"}, - {864, "CSIBM864"}, - - {865, "865"}, - {865, "CP865"}, - {865, "IBM865"}, - {865, "CSIBM865"}, - - {869, "869"}, - {869, "CP-GR"}, - {869, "CP869"}, - {869, "IBM869"}, - {869, "CSIBM869"}, - - /* !IsValidCodePage(1152) */ - {1125, "CP1125"}, - - /* - * Code Page Identifiers - * http://msdn2.microsoft.com/en-us/library/ms776446.aspx - */ - {37, "IBM037"}, /* IBM EBCDIC US-Canada */ - {437, "IBM437"}, /* OEM United States */ - {500, "IBM500"}, /* IBM EBCDIC International */ - {708, "ASMO-708"}, /* Arabic (ASMO 708) */ - /* 709 Arabic (ASMO-449+, BCON V4) */ - /* 710 Arabic - Transparent Arabic */ - {720, "DOS-720"}, /* Arabic (Transparent ASMO); Arabic (DOS) */ - {737, "ibm737"}, /* OEM Greek (formerly 437G); Greek (DOS) */ - {775, "ibm775"}, /* OEM Baltic; Baltic (DOS) */ - {850, "ibm850"}, /* OEM Multilingual Latin 1; Western European (DOS) */ - {852, "ibm852"}, /* OEM Latin 2; Central European (DOS) */ - {855, "IBM855"}, /* OEM Cyrillic (primarily Russian) */ - {857, "ibm857"}, /* OEM Turkish; Turkish (DOS) */ - {858, "IBM00858"}, /* OEM Multilingual Latin 1 + Euro symbol */ - {860, "IBM860"}, /* OEM Portuguese; Portuguese (DOS) */ - {861, "ibm861"}, /* OEM Icelandic; Icelandic (DOS) */ - {862, "DOS-862"}, /* OEM Hebrew; Hebrew (DOS) */ - {863, "IBM863"}, /* OEM French Canadian; French Canadian (DOS) */ - {864, "IBM864"}, /* OEM Arabic; Arabic (864) */ - {865, "IBM865"}, /* OEM Nordic; Nordic (DOS) */ - {866, "cp866"}, /* OEM Russian; Cyrillic (DOS) */ - {869, "ibm869"}, /* OEM Modern Greek; Greek, Modern (DOS) */ - {870, "IBM870"}, /* IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin 2 */ - {874, "windows-874"}, /* ANSI/OEM Thai (same as 28605, ISO 8859-15); Thai (Windows) */ - {875, "cp875"}, /* IBM EBCDIC Greek Modern */ - {932, "shift_jis"}, /* ANSI/OEM Japanese; Japanese (Shift-JIS) */ - {932, "shift-jis"}, /* alternative name for it */ - {936, "gb2312"}, /* ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312) */ - {949, "ks_c_5601-1987"}, /* ANSI/OEM Korean (Unified Hangul Code) */ - {950, "big5"}, /* ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5) */ - {950, "big5hkscs"}, /* ANSI/OEM Traditional Chinese (Hong Kong SAR); Chinese Traditional (Big5-HKSCS) */ - {950, "big5-hkscs"}, /* alternative name for it */ - {1026, "IBM1026"}, /* IBM EBCDIC Turkish (Latin 5) */ - {1047, "IBM01047"}, /* IBM EBCDIC Latin 1/Open System */ - {1140, "IBM01140"}, /* IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro) */ - {1141, "IBM01141"}, /* IBM EBCDIC Germany (20273 + Euro symbol); IBM EBCDIC (Germany-Euro) */ - {1142, "IBM01142"}, /* IBM EBCDIC Denmark-Norway (20277 + Euro symbol); IBM EBCDIC (Denmark-Norway-Euro) */ - {1143, "IBM01143"}, /* IBM EBCDIC Finland-Sweden (20278 + Euro symbol); IBM EBCDIC (Finland-Sweden-Euro) */ - {1144, "IBM01144"}, /* IBM EBCDIC Italy (20280 + Euro symbol); IBM EBCDIC (Italy-Euro) */ - {1145, "IBM01145"}, /* IBM EBCDIC Latin America-Spain (20284 + Euro symbol); IBM EBCDIC (Spain-Euro) */ - {1146, "IBM01146"}, /* IBM EBCDIC United Kingdom (20285 + Euro symbol); IBM EBCDIC (UK-Euro) */ - {1147, "IBM01147"}, /* IBM EBCDIC France (20297 + Euro symbol); IBM EBCDIC (France-Euro) */ - {1148, "IBM01148"}, /* IBM EBCDIC International (500 + Euro symbol); IBM EBCDIC (International-Euro) */ - {1149, "IBM01149"}, /* IBM EBCDIC Icelandic (20871 + Euro symbol); IBM EBCDIC (Icelandic-Euro) */ - {1250, "windows-1250"}, /* ANSI Central European; Central European (Windows) */ - {1251, "windows-1251"}, /* ANSI Cyrillic; Cyrillic (Windows) */ - {1252, "windows-1252"}, /* ANSI Latin 1; Western European (Windows) */ - {1253, "windows-1253"}, /* ANSI Greek; Greek (Windows) */ - {1254, "windows-1254"}, /* ANSI Turkish; Turkish (Windows) */ - {1255, "windows-1255"}, /* ANSI Hebrew; Hebrew (Windows) */ - {1256, "windows-1256"}, /* ANSI Arabic; Arabic (Windows) */ - {1257, "windows-1257"}, /* ANSI Baltic; Baltic (Windows) */ - {1258, "windows-1258"}, /* ANSI/OEM Vietnamese; Vietnamese (Windows) */ - {1361, "Johab"}, /* Korean (Johab) */ - {10000, "macintosh"}, /* MAC Roman; Western European (Mac) */ - {10001, "x-mac-japanese"}, /* Japanese (Mac) */ - {10002, "x-mac-chinesetrad"}, /* MAC Traditional Chinese (Big5); Chinese Traditional (Mac) */ - {10003, "x-mac-korean"}, /* Korean (Mac) */ - {10004, "x-mac-arabic"}, /* Arabic (Mac) */ - {10005, "x-mac-hebrew"}, /* Hebrew (Mac) */ - {10006, "x-mac-greek"}, /* Greek (Mac) */ - {10007, "x-mac-cyrillic"}, /* Cyrillic (Mac) */ - {10008, "x-mac-chinesesimp"}, /* MAC Simplified Chinese (GB 2312); Chinese Simplified (Mac) */ - {10010, "x-mac-romanian"}, /* Romanian (Mac) */ - {10017, "x-mac-ukrainian"}, /* Ukrainian (Mac) */ - {10021, "x-mac-thai"}, /* Thai (Mac) */ - {10029, "x-mac-ce"}, /* MAC Latin 2; Central European (Mac) */ - {10079, "x-mac-icelandic"}, /* Icelandic (Mac) */ - {10081, "x-mac-turkish"}, /* Turkish (Mac) */ - {10082, "x-mac-croatian"}, /* Croatian (Mac) */ - {20000, "x-Chinese_CNS"}, /* CNS Taiwan; Chinese Traditional (CNS) */ - {20001, "x-cp20001"}, /* TCA Taiwan */ - {20002, "x_Chinese-Eten"}, /* Eten Taiwan; Chinese Traditional (Eten) */ - {20003, "x-cp20003"}, /* IBM5550 Taiwan */ - {20004, "x-cp20004"}, /* TeleText Taiwan */ - {20005, "x-cp20005"}, /* Wang Taiwan */ - {20105, "x-IA5"}, /* IA5 (IRV International Alphabet No. 5, 7-bit); Western European (IA5) */ - {20106, "x-IA5-German"}, /* IA5 German (7-bit) */ - {20107, "x-IA5-Swedish"}, /* IA5 Swedish (7-bit) */ - {20108, "x-IA5-Norwegian"}, /* IA5 Norwegian (7-bit) */ - {20127, "us-ascii"}, /* US-ASCII (7-bit) */ - {20261, "x-cp20261"}, /* T.61 */ - {20269, "x-cp20269"}, /* ISO 6937 Non-Spacing Accent */ - {20273, "IBM273"}, /* IBM EBCDIC Germany */ - {20277, "IBM277"}, /* IBM EBCDIC Denmark-Norway */ - {20278, "IBM278"}, /* IBM EBCDIC Finland-Sweden */ - {20280, "IBM280"}, /* IBM EBCDIC Italy */ - {20284, "IBM284"}, /* IBM EBCDIC Latin America-Spain */ - {20285, "IBM285"}, /* IBM EBCDIC United Kingdom */ - {20290, "IBM290"}, /* IBM EBCDIC Japanese Katakana Extended */ - {20297, "IBM297"}, /* IBM EBCDIC France */ - {20420, "IBM420"}, /* IBM EBCDIC Arabic */ - {20423, "IBM423"}, /* IBM EBCDIC Greek */ - {20424, "IBM424"}, /* IBM EBCDIC Hebrew */ - {20833, "x-EBCDIC-KoreanExtended"}, /* IBM EBCDIC Korean Extended */ - {20838, "IBM-Thai"}, /* IBM EBCDIC Thai */ - {20866, "koi8-r"}, /* Russian (KOI8-R); Cyrillic (KOI8-R) */ - {20871, "IBM871"}, /* IBM EBCDIC Icelandic */ - {20880, "IBM880"}, /* IBM EBCDIC Cyrillic Russian */ - {20905, "IBM905"}, /* IBM EBCDIC Turkish */ - {20924, "IBM00924"}, /* IBM EBCDIC Latin 1/Open System (1047 + Euro symbol) */ - {20932, "EUC-JP"}, /* Japanese (JIS 0208-1990 and 0121-1990) */ - {20936, "x-cp20936"}, /* Simplified Chinese (GB2312); Chinese Simplified (GB2312-80) */ - {20949, "x-cp20949"}, /* Korean Wansung */ - {21025, "cp1025"}, /* IBM EBCDIC Cyrillic Serbian-Bulgarian */ - /* 21027 (deprecated) */ - {21866, "koi8-u"}, /* Ukrainian (KOI8-U); Cyrillic (KOI8-U) */ - {28591, "iso-8859-1"}, /* ISO 8859-1 Latin 1; Western European (ISO) */ - {28591, "iso8859-1"}, /* ISO 8859-1 Latin 1; Western European (ISO) */ - {28591, "iso_8859-1"}, - {28591, "iso_8859_1"}, - {28592, "iso-8859-2"}, /* ISO 8859-2 Central European; Central European (ISO) */ - {28592, "iso8859-2"}, /* ISO 8859-2 Central European; Central European (ISO) */ - {28592, "iso_8859-2"}, - {28592, "iso_8859_2"}, - {28593, "iso-8859-3"}, /* ISO 8859-3 Latin 3 */ - {28593, "iso8859-3"}, /* ISO 8859-3 Latin 3 */ - {28593, "iso_8859-3"}, - {28593, "iso_8859_3"}, - {28594, "iso-8859-4"}, /* ISO 8859-4 Baltic */ - {28594, "iso8859-4"}, /* ISO 8859-4 Baltic */ - {28594, "iso_8859-4"}, - {28594, "iso_8859_4"}, - {28595, "iso-8859-5"}, /* ISO 8859-5 Cyrillic */ - {28595, "iso8859-5"}, /* ISO 8859-5 Cyrillic */ - {28595, "iso_8859-5"}, - {28595, "iso_8859_5"}, - {28596, "iso-8859-6"}, /* ISO 8859-6 Arabic */ - {28596, "iso8859-6"}, /* ISO 8859-6 Arabic */ - {28596, "iso_8859-6"}, - {28596, "iso_8859_6"}, - {28597, "iso-8859-7"}, /* ISO 8859-7 Greek */ - {28597, "iso8859-7"}, /* ISO 8859-7 Greek */ - {28597, "iso_8859-7"}, - {28597, "iso_8859_7"}, - {28598, "iso-8859-8"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ - {28598, "iso8859-8"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ - {28598, "iso_8859-8"}, - {28598, "iso_8859_8"}, - {28599, "iso-8859-9"}, /* ISO 8859-9 Turkish */ - {28599, "iso8859-9"}, /* ISO 8859-9 Turkish */ - {28599, "iso_8859-9"}, - {28599, "iso_8859_9"}, - {28603, "iso-8859-13"}, /* ISO 8859-13 Estonian */ - {28603, "iso8859-13"}, /* ISO 8859-13 Estonian */ - {28603, "iso_8859-13"}, - {28603, "iso_8859_13"}, - {28605, "iso-8859-15"}, /* ISO 8859-15 Latin 9 */ - {28605, "iso8859-15"}, /* ISO 8859-15 Latin 9 */ - {28605, "iso_8859-15"}, - {28605, "iso_8859_15"}, - {29001, "x-Europa"}, /* Europa 3 */ - {38598, "iso-8859-8-i"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ - {38598, "iso8859-8-i"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ - {38598, "iso_8859-8-i"}, - {38598, "iso_8859_8-i"}, - {50220, "iso-2022-jp"}, /* ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) */ - {50221, "csISO2022JP"}, /* ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana) */ - {50222, "iso-2022-jp"}, /* ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI) */ - {50225, "iso-2022-kr"}, /* ISO 2022 Korean */ - {50225, "iso2022-kr"}, /* ISO 2022 Korean */ - {50227, "x-cp50227"}, /* ISO 2022 Simplified Chinese; Chinese Simplified (ISO 2022) */ - /* 50229 ISO 2022 Traditional Chinese */ - /* 50930 EBCDIC Japanese (Katakana) Extended */ - /* 50931 EBCDIC US-Canada and Japanese */ - /* 50933 EBCDIC Korean Extended and Korean */ - /* 50935 EBCDIC Simplified Chinese Extended and Simplified Chinese */ - /* 50936 EBCDIC Simplified Chinese */ - /* 50937 EBCDIC US-Canada and Traditional Chinese */ - /* 50939 EBCDIC Japanese (Latin) Extended and Japanese */ - {51932, "euc-jp"}, /* EUC Japanese */ - {51936, "EUC-CN"}, /* EUC Simplified Chinese; Chinese Simplified (EUC) */ - {51949, "euc-kr"}, /* EUC Korean */ - /* 51950 EUC Traditional Chinese */ - {52936, "hz-gb-2312"}, /* HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ) */ - {54936, "GB18030"}, /* Windows XP and later: GB18030 Simplified Chinese (4 byte); Chinese Simplified (GB18030) */ - {57002, "x-iscii-de"}, /* ISCII Devanagari */ - {57003, "x-iscii-be"}, /* ISCII Bengali */ - {57004, "x-iscii-ta"}, /* ISCII Tamil */ - {57005, "x-iscii-te"}, /* ISCII Telugu */ - {57006, "x-iscii-as"}, /* ISCII Assamese */ - {57007, "x-iscii-or"}, /* ISCII Oriya */ - {57008, "x-iscii-ka"}, /* ISCII Kannada */ - {57009, "x-iscii-ma"}, /* ISCII Malayalam */ - {57010, "x-iscii-gu"}, /* ISCII Gujarati */ - {57011, "x-iscii-pa"}, /* ISCII Punjabi */ - - {0, NULL} +#define CP_ALIAS_LIST \ + CP_ALIAS(65001, "CP65001") \ + CP_ALIAS(65001, "UTF8") \ + CP_ALIAS(65001, "UTF-8") \ +\ + CP_ALIAS(1200, "CP1200") \ + CP_ALIAS(1200, "UTF16LE") \ + CP_ALIAS(1200, "UTF-16LE") \ + CP_ALIAS(1200, "UCS2LE") \ + CP_ALIAS(1200, "UCS-2LE") \ + CP_ALIAS(1200, "UCS-2-INTERNAL") \ +\ + CP_ALIAS(1201, "CP1201") \ + CP_ALIAS(1201, "UTF16BE") \ + CP_ALIAS(1201, "UTF-16BE") \ + CP_ALIAS(1201, "UCS2BE") \ + CP_ALIAS(1201, "UCS-2BE") \ + CP_ALIAS(1201, "unicodeFFFE") \ +\ + CP_ALIAS(12000, "CP12000") \ + CP_ALIAS(12000, "UTF32LE") \ + CP_ALIAS(12000, "UTF-32LE") \ + CP_ALIAS(12000, "UCS4LE") \ + CP_ALIAS(12000, "UCS-4LE") \ +\ + CP_ALIAS(12001, "CP12001") \ + CP_ALIAS(12001, "UTF32BE") \ + CP_ALIAS(12001, "UTF-32BE") \ + CP_ALIAS(12001, "UCS4BE") \ + CP_ALIAS(12001, "UCS-4BE") \ +\ + /* Default is little endian, because the platform is */ \ + CP_ALIAS(1200, "UTF16") \ + CP_ALIAS(1200, "UTF-16") \ + CP_ALIAS(1200, "UCS2") \ + CP_ALIAS(1200, "UCS-2") \ + CP_ALIAS(12000, "UTF32") \ + CP_ALIAS(12000, "UTF-32") \ + CP_ALIAS(12000, "UCS4") \ + CP_ALIAS(12000, "UCS-4") \ +\ + /* copy from libiconv `iconv -l` */ \ + /* !IsValidCodePage(367) */ \ + CP_ALIAS(20127, "ANSI_X3.4-1968") \ + CP_ALIAS(20127, "ANSI_X3.4-1986") \ + CP_ALIAS(20127, "ASCII") \ + CP_ALIAS(20127, "CP367") \ + CP_ALIAS(20127, "IBM367") \ + CP_ALIAS(20127, "ISO-IR-6") \ + CP_ALIAS(20127, "ISO646-US") \ + CP_ALIAS(20127, "ISO_646.IRV:1991") \ + CP_ALIAS(20127, "US") \ + CP_ALIAS(20127, "US-ASCII") \ + CP_ALIAS(20127, "CSASCII") \ +\ + /* !IsValidCodePage(819) */ \ + CP_ALIAS(1252, "CP819") \ + CP_ALIAS(1252, "IBM819") \ + CP_ALIAS(28591, "ISO-8859-1") \ + CP_ALIAS(28591, "ISO-IR-100") \ + CP_ALIAS(28591, "ISO8859-1") \ + CP_ALIAS(28591, "ISO_8859-1") \ + CP_ALIAS(28591, "ISO_8859-1:1987") \ + CP_ALIAS(28591, "L1") \ + CP_ALIAS(28591, "LATIN1") \ + CP_ALIAS(28591, "CSISOLATIN1") \ +\ + CP_ALIAS(1250, "CP1250") \ + CP_ALIAS(1250, "MS-EE") \ + CP_ALIAS(1250, "WINDOWS-1250") \ +\ + CP_ALIAS(1251, "CP1251") \ + CP_ALIAS(1251, "MS-CYRL") \ + CP_ALIAS(1251, "WINDOWS-1251") \ +\ + CP_ALIAS(1252, "CP1252") \ + CP_ALIAS(1252, "MS-ANSI") \ + CP_ALIAS(1252, "WINDOWS-1252") \ +\ + CP_ALIAS(1253, "CP1253") \ + CP_ALIAS(1253, "MS-GREEK") \ + CP_ALIAS(1253, "WINDOWS-1253") \ +\ + CP_ALIAS(1254, "CP1254") \ + CP_ALIAS(1254, "MS-TURK") \ + CP_ALIAS(1254, "WINDOWS-1254") \ +\ + CP_ALIAS(1255, "CP1255") \ + CP_ALIAS(1255, "MS-HEBR") \ + CP_ALIAS(1255, "WINDOWS-1255") \ +\ + CP_ALIAS(1256, "CP1256") \ + CP_ALIAS(1256, "MS-ARAB") \ + CP_ALIAS(1256, "WINDOWS-1256") \ +\ + CP_ALIAS(1257, "CP1257") \ + CP_ALIAS(1257, "WINBALTRIM") \ + CP_ALIAS(1257, "WINDOWS-1257") \ +\ + CP_ALIAS(1258, "CP1258") \ + CP_ALIAS(1258, "WINDOWS-1258") \ +\ + CP_ALIAS(850, "850") \ + CP_ALIAS(850, "CP850") \ + CP_ALIAS(850, "IBM850") \ + CP_ALIAS(850, "CSPC850MULTILINGUAL") \ +\ + /* !IsValidCodePage(862) */ \ + CP_ALIAS(862, "862") \ + CP_ALIAS(862, "CP862") \ + CP_ALIAS(862, "IBM862") \ + CP_ALIAS(862, "CSPC862LATINHEBREW") \ +\ + CP_ALIAS(866, "866") \ + CP_ALIAS(866, "CP866") \ + CP_ALIAS(866, "IBM866") \ + CP_ALIAS(866, "CSIBM866") \ +\ + /* !IsValidCodePage(154) */ \ + CP_ALIAS(154, "CP154") \ + CP_ALIAS(154, "CYRILLIC-ASIAN") \ + CP_ALIAS(154, "PT154") \ + CP_ALIAS(154, "PTCP154") \ + CP_ALIAS(154, "CSPTCP154") \ +\ + /* !IsValidCodePage(1133) */ \ + CP_ALIAS(1133, "CP1133") \ + CP_ALIAS(1133, "IBM-CP1133") \ +\ + CP_ALIAS(874, "CP874") \ + CP_ALIAS(874, "WINDOWS-874") \ +\ + /* !IsValidCodePage(51932) */ \ + CP_ALIAS(51932, "CP51932") \ + CP_ALIAS(51932, "MS51932") \ + CP_ALIAS(51932, "WINDOWS-51932") \ + CP_ALIAS(51932, "EUC-JP") \ +\ + CP_ALIAS(932, "CP932") \ + CP_ALIAS(932, "MS932") \ + CP_ALIAS(932, "SHIFFT_JIS") \ + CP_ALIAS(932, "SHIFFT_JIS-MS") \ + CP_ALIAS(932, "SJIS") \ + CP_ALIAS(932, "SJIS-MS") \ + CP_ALIAS(932, "SJIS-OPEN") \ + CP_ALIAS(932, "SJIS-WIN") \ + CP_ALIAS(932, "WINDOWS-31J") \ + CP_ALIAS(932, "WINDOWS-932") \ + CP_ALIAS(932, "CSWINDOWS31J") \ +\ + CP_ALIAS(50221, "CP50221") \ + CP_ALIAS(50221, "ISO-2022-JP") \ + CP_ALIAS(50221, "ISO-2022-JP-MS") \ + CP_ALIAS(50221, "ISO2022-JP") \ + CP_ALIAS(50221, "ISO2022-JP-MS") \ + CP_ALIAS(50221, "MS50221") \ + CP_ALIAS(50221, "WINDOWS-50221") \ +\ + CP_ALIAS(936, "CP936") \ + CP_ALIAS(936, "GBK") \ + CP_ALIAS(936, "MS936") \ + CP_ALIAS(936, "WINDOWS-936") \ +\ + CP_ALIAS(950, "CP950") \ + CP_ALIAS(950, "BIG5") \ + CP_ALIAS(950, "BIG5HKSCS") \ + CP_ALIAS(950, "BIG5-HKSCS") \ +\ + CP_ALIAS(949, "CP949") \ + CP_ALIAS(949, "UHC") \ + CP_ALIAS(949, "EUC-KR") \ +\ + CP_ALIAS(1361, "CP1361") \ + CP_ALIAS(1361, "JOHAB") \ +\ + CP_ALIAS(437, "437") \ + CP_ALIAS(437, "CP437") \ + CP_ALIAS(437, "IBM437") \ + CP_ALIAS(437, "CSPC8CODEPAGE437") \ +\ + CP_ALIAS(737, "CP737") \ +\ + CP_ALIAS(775, "CP775") \ + CP_ALIAS(775, "IBM775") \ + CP_ALIAS(775, "CSPC775BALTIC") \ +\ + CP_ALIAS(852, "852") \ + CP_ALIAS(852, "CP852") \ + CP_ALIAS(852, "IBM852") \ + CP_ALIAS(852, "CSPCP852") \ +\ + /* !IsValidCodePage(853) */ \ + CP_ALIAS(853, "CP853") \ +\ + CP_ALIAS(855, "855") \ + CP_ALIAS(855, "CP855") \ + CP_ALIAS(855, "IBM855") \ + CP_ALIAS(855, "CSIBM855") \ +\ + CP_ALIAS(857, "857") \ + CP_ALIAS(857, "CP857") \ + CP_ALIAS(857, "IBM857") \ + CP_ALIAS(857, "CSIBM857") \ +\ + /* !IsValidCodePage(858) */ \ + CP_ALIAS(858, "CP858") \ +\ + CP_ALIAS(860, "860") \ + CP_ALIAS(860, "CP860") \ + CP_ALIAS(860, "IBM860") \ + CP_ALIAS(860, "CSIBM860") \ +\ + CP_ALIAS(861, "861") \ + CP_ALIAS(861, "CP-IS") \ + CP_ALIAS(861, "CP861") \ + CP_ALIAS(861, "IBM861") \ + CP_ALIAS(861, "CSIBM861") \ +\ + CP_ALIAS(863, "863") \ + CP_ALIAS(863, "CP863") \ + CP_ALIAS(863, "IBM863") \ + CP_ALIAS(863, "CSIBM863") \ +\ + CP_ALIAS(864, "CP864") \ + CP_ALIAS(864, "IBM864") \ + CP_ALIAS(864, "CSIBM864") \ +\ + CP_ALIAS(865, "865") \ + CP_ALIAS(865, "CP865") \ + CP_ALIAS(865, "IBM865") \ + CP_ALIAS(865, "CSIBM865") \ +\ + CP_ALIAS(869, "869") \ + CP_ALIAS(869, "CP-GR") \ + CP_ALIAS(869, "CP869") \ + CP_ALIAS(869, "IBM869") \ + CP_ALIAS(869, "CSIBM869") \ +\ + /* !IsValidCodePage(1152) */ \ + CP_ALIAS(1125, "CP1125") \ +\ + /* \ + * Code Page Identifiers \ + * http://msdn2.microsoft.com/en-us/library/ms776446.aspx \ + */ \ + CP_ALIAS(37, "IBM037") /* IBM EBCDIC US-Canada */ \ + CP_ALIAS(437, "IBM437") /* OEM United States */ \ + CP_ALIAS(500, "IBM500") /* IBM EBCDIC International */ \ + CP_ALIAS(708, "ASMO-708") /* Arabic (ASMO 708) */ \ + /* 709 Arabic (ASMO-449+, BCON V4) */ \ + /* 710 Arabic - Transparent Arabic */ \ + CP_ALIAS(720, "DOS-720") /* Arabic (Transparent ASMO); Arabic (DOS) */ \ + CP_ALIAS(737, "ibm737") /* OEM Greek (formerly 437G); Greek (DOS) */ \ + CP_ALIAS(775, "ibm775") /* OEM Baltic; Baltic (DOS) */ \ + CP_ALIAS(850, "ibm850") /* OEM Multilingual Latin 1; Western European (DOS) */ \ + CP_ALIAS(852, "ibm852") /* OEM Latin 2; Central European (DOS) */ \ + CP_ALIAS(855, "IBM855") /* OEM Cyrillic (primarily Russian) */ \ + CP_ALIAS(857, "ibm857") /* OEM Turkish; Turkish (DOS) */ \ + CP_ALIAS(858, "IBM00858") /* OEM Multilingual Latin 1 + Euro symbol */ \ + CP_ALIAS(860, "IBM860") /* OEM Portuguese; Portuguese (DOS) */ \ + CP_ALIAS(861, "ibm861") /* OEM Icelandic; Icelandic (DOS) */ \ + CP_ALIAS(862, "DOS-862") /* OEM Hebrew; Hebrew (DOS) */ \ + CP_ALIAS(863, "IBM863") /* OEM French Canadian; French Canadian (DOS) */ \ + CP_ALIAS(864, "IBM864") /* OEM Arabic; Arabic (864) */ \ + CP_ALIAS(865, "IBM865") /* OEM Nordic; Nordic (DOS) */ \ + CP_ALIAS(866, "cp866") /* OEM Russian; Cyrillic (DOS) */ \ + CP_ALIAS(869, "ibm869") /* OEM Modern Greek; Greek, Modern (DOS) */ \ + CP_ALIAS(870, "IBM870") /* IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin 2 */ \ + CP_ALIAS(874, "windows-874") /* ANSI/OEM Thai (same as 28605, ISO 8859-15); Thai (Windows) */ \ + CP_ALIAS(875, "cp875") /* IBM EBCDIC Greek Modern */ \ + CP_ALIAS(932, "shift_jis") /* ANSI/OEM Japanese; Japanese (Shift-JIS) */ \ + CP_ALIAS(932, "shift-jis") /* alternative name for it */ \ + CP_ALIAS(936, "gb2312") /* ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312) */ \ + CP_ALIAS(949, "ks_c_5601-1987") /* ANSI/OEM Korean (Unified Hangul Code) */ \ + CP_ALIAS(950, "big5") /* ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5) */ \ + CP_ALIAS(950, "big5hkscs") /* ANSI/OEM Traditional Chinese (Hong Kong SAR); Chinese Traditional (Big5-HKSCS) */ \ + CP_ALIAS(950, "big5-hkscs") /* alternative name for it */ \ + CP_ALIAS(1026, "IBM1026") /* IBM EBCDIC Turkish (Latin 5) */ \ + CP_ALIAS(1047, "IBM01047") /* IBM EBCDIC Latin 1/Open System */ \ + CP_ALIAS(1140, "IBM01140") /* IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro) */ \ + CP_ALIAS(1141, "IBM01141") /* IBM EBCDIC Germany (20273 + Euro symbol); IBM EBCDIC (Germany-Euro) */ \ + CP_ALIAS(1142, "IBM01142") /* IBM EBCDIC Denmark-Norway (20277 + Euro symbol); IBM EBCDIC (Denmark-Norway-Euro) */ \ + CP_ALIAS(1143, "IBM01143") /* IBM EBCDIC Finland-Sweden (20278 + Euro symbol); IBM EBCDIC (Finland-Sweden-Euro) */ \ + CP_ALIAS(1144, "IBM01144") /* IBM EBCDIC Italy (20280 + Euro symbol); IBM EBCDIC (Italy-Euro) */ \ + CP_ALIAS(1145, "IBM01145") /* IBM EBCDIC Latin America-Spain (20284 + Euro symbol); IBM EBCDIC (Spain-Euro) */ \ + CP_ALIAS(1146, "IBM01146") /* IBM EBCDIC United Kingdom (20285 + Euro symbol); IBM EBCDIC (UK-Euro) */ \ + CP_ALIAS(1147, "IBM01147") /* IBM EBCDIC France (20297 + Euro symbol); IBM EBCDIC (France-Euro) */ \ + CP_ALIAS(1148, "IBM01148") /* IBM EBCDIC International (500 + Euro symbol); IBM EBCDIC (International-Euro) */ \ + CP_ALIAS(1149, "IBM01149") /* IBM EBCDIC Icelandic (20871 + Euro symbol); IBM EBCDIC (Icelandic-Euro) */ \ + CP_ALIAS(1250, "windows-1250") /* ANSI Central European; Central European (Windows) */ \ + CP_ALIAS(1251, "windows-1251") /* ANSI Cyrillic; Cyrillic (Windows) */ \ + CP_ALIAS(1252, "windows-1252") /* ANSI Latin 1; Western European (Windows) */ \ + CP_ALIAS(1253, "windows-1253") /* ANSI Greek; Greek (Windows) */ \ + CP_ALIAS(1254, "windows-1254") /* ANSI Turkish; Turkish (Windows) */ \ + CP_ALIAS(1255, "windows-1255") /* ANSI Hebrew; Hebrew (Windows) */ \ + CP_ALIAS(1256, "windows-1256") /* ANSI Arabic; Arabic (Windows) */ \ + CP_ALIAS(1257, "windows-1257") /* ANSI Baltic; Baltic (Windows) */ \ + CP_ALIAS(1258, "windows-1258") /* ANSI/OEM Vietnamese; Vietnamese (Windows) */ \ + CP_ALIAS(1361, "Johab") /* Korean (Johab) */ \ + CP_ALIAS(10000, "macintosh") /* MAC Roman; Western European (Mac) */ \ + CP_ALIAS(10001, "x-mac-japanese") /* Japanese (Mac) */ \ + CP_ALIAS(10002, "x-mac-chinesetrad") /* MAC Traditional Chinese (Big5); Chinese Traditional (Mac) */ \ + CP_ALIAS(10003, "x-mac-korean") /* Korean (Mac) */ \ + CP_ALIAS(10004, "x-mac-arabic") /* Arabic (Mac) */ \ + CP_ALIAS(10005, "x-mac-hebrew") /* Hebrew (Mac) */ \ + CP_ALIAS(10006, "x-mac-greek") /* Greek (Mac) */ \ + CP_ALIAS(10007, "x-mac-cyrillic") /* Cyrillic (Mac) */ \ + CP_ALIAS(10008, "x-mac-chinesesimp") /* MAC Simplified Chinese (GB 2312); Chinese Simplified (Mac) */ \ + CP_ALIAS(10010, "x-mac-romanian") /* Romanian (Mac) */ \ + CP_ALIAS(10017, "x-mac-ukrainian") /* Ukrainian (Mac) */ \ + CP_ALIAS(10021, "x-mac-thai") /* Thai (Mac) */ \ + CP_ALIAS(10029, "x-mac-ce") /* MAC Latin 2; Central European (Mac) */ \ + CP_ALIAS(10079, "x-mac-icelandic") /* Icelandic (Mac) */ \ + CP_ALIAS(10081, "x-mac-turkish") /* Turkish (Mac) */ \ + CP_ALIAS(10082, "x-mac-croatian") /* Croatian (Mac) */ \ + CP_ALIAS(20000, "x-Chinese_CNS") /* CNS Taiwan; Chinese Traditional (CNS) */ \ + CP_ALIAS(20001, "x-cp20001") /* TCA Taiwan */ \ + CP_ALIAS(20002, "x_Chinese-Eten") /* Eten Taiwan; Chinese Traditional (Eten) */ \ + CP_ALIAS(20003, "x-cp20003") /* IBM5550 Taiwan */ \ + CP_ALIAS(20004, "x-cp20004") /* TeleText Taiwan */ \ + CP_ALIAS(20005, "x-cp20005") /* Wang Taiwan */ \ + CP_ALIAS(20105, "x-IA5") /* IA5 (IRV International Alphabet No. 5, 7-bit); Western European (IA5) */ \ + CP_ALIAS(20106, "x-IA5-German") /* IA5 German (7-bit) */ \ + CP_ALIAS(20107, "x-IA5-Swedish") /* IA5 Swedish (7-bit) */ \ + CP_ALIAS(20108, "x-IA5-Norwegian") /* IA5 Norwegian (7-bit) */ \ + CP_ALIAS(20127, "us-ascii") /* US-ASCII (7-bit) */ \ + CP_ALIAS(20261, "x-cp20261") /* T.61 */ \ + CP_ALIAS(20269, "x-cp20269") /* ISO 6937 Non-Spacing Accent */ \ + CP_ALIAS(20273, "IBM273") /* IBM EBCDIC Germany */ \ + CP_ALIAS(20277, "IBM277") /* IBM EBCDIC Denmark-Norway */ \ + CP_ALIAS(20278, "IBM278") /* IBM EBCDIC Finland-Sweden */ \ + CP_ALIAS(20280, "IBM280") /* IBM EBCDIC Italy */ \ + CP_ALIAS(20284, "IBM284") /* IBM EBCDIC Latin America-Spain */ \ + CP_ALIAS(20285, "IBM285") /* IBM EBCDIC United Kingdom */ \ + CP_ALIAS(20290, "IBM290") /* IBM EBCDIC Japanese Katakana Extended */ \ + CP_ALIAS(20297, "IBM297") /* IBM EBCDIC France */ \ + CP_ALIAS(20420, "IBM420") /* IBM EBCDIC Arabic */ \ + CP_ALIAS(20423, "IBM423") /* IBM EBCDIC Greek */ \ + CP_ALIAS(20424, "IBM424") /* IBM EBCDIC Hebrew */ \ + CP_ALIAS(20833, "x-EBCDIC-KoreanExtended") /* IBM EBCDIC Korean Extended */ \ + CP_ALIAS(20838, "IBM-Thai") /* IBM EBCDIC Thai */ \ + CP_ALIAS(20866, "koi8-r") /* Russian (KOI8-R); Cyrillic (KOI8-R) */ \ + CP_ALIAS(20871, "IBM871") /* IBM EBCDIC Icelandic */ \ + CP_ALIAS(20880, "IBM880") /* IBM EBCDIC Cyrillic Russian */ \ + CP_ALIAS(20905, "IBM905") /* IBM EBCDIC Turkish */ \ + CP_ALIAS(20924, "IBM00924") /* IBM EBCDIC Latin 1/Open System (1047 + Euro symbol) */ \ + CP_ALIAS(20932, "EUC-JP") /* Japanese (JIS 0208-1990 and 0121-1990) */ \ + CP_ALIAS(20936, "x-cp20936") /* Simplified Chinese (GB2312); Chinese Simplified (GB2312-80) */ \ + CP_ALIAS(20949, "x-cp20949") /* Korean Wansung */ \ + CP_ALIAS(21025, "cp1025") /* IBM EBCDIC Cyrillic Serbian-Bulgarian */ \ + /* 21027 (deprecated) */ \ + CP_ALIAS(21866, "koi8-u") /* Ukrainian (KOI8-U); Cyrillic (KOI8-U) */ \ + CP_ALIAS(28591, "iso-8859-1") /* ISO 8859-1 Latin 1; Western European (ISO) */ \ + CP_ALIAS(28591, "iso8859-1") /* ISO 8859-1 Latin 1; Western European (ISO) */ \ + CP_ALIAS(28591, "iso_8859-1") \ + CP_ALIAS(28591, "iso_8859_1") \ + CP_ALIAS(28592, "iso-8859-2") /* ISO 8859-2 Central European; Central European (ISO) */ \ + CP_ALIAS(28592, "iso8859-2") /* ISO 8859-2 Central European; Central European (ISO) */ \ + CP_ALIAS(28592, "iso_8859-2") \ + CP_ALIAS(28592, "iso_8859_2") \ + CP_ALIAS(28593, "iso-8859-3") /* ISO 8859-3 Latin 3 */ \ + CP_ALIAS(28593, "iso8859-3") /* ISO 8859-3 Latin 3 */ \ + CP_ALIAS(28593, "iso_8859-3") \ + CP_ALIAS(28593, "iso_8859_3") \ + CP_ALIAS(28594, "iso-8859-4") /* ISO 8859-4 Baltic */ \ + CP_ALIAS(28594, "iso8859-4") /* ISO 8859-4 Baltic */ \ + CP_ALIAS(28594, "iso_8859-4") \ + CP_ALIAS(28594, "iso_8859_4") \ + CP_ALIAS(28595, "iso-8859-5") /* ISO 8859-5 Cyrillic */ \ + CP_ALIAS(28595, "iso8859-5") /* ISO 8859-5 Cyrillic */ \ + CP_ALIAS(28595, "iso_8859-5") \ + CP_ALIAS(28595, "iso_8859_5") \ + CP_ALIAS(28596, "iso-8859-6") /* ISO 8859-6 Arabic */ \ + CP_ALIAS(28596, "iso8859-6") /* ISO 8859-6 Arabic */ \ + CP_ALIAS(28596, "iso_8859-6") \ + CP_ALIAS(28596, "iso_8859_6") \ + CP_ALIAS(28597, "iso-8859-7") /* ISO 8859-7 Greek */ \ + CP_ALIAS(28597, "iso8859-7") /* ISO 8859-7 Greek */ \ + CP_ALIAS(28597, "iso_8859-7") \ + CP_ALIAS(28597, "iso_8859_7") \ + CP_ALIAS(28598, "iso-8859-8") /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ \ + CP_ALIAS(28598, "iso8859-8") /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ \ + CP_ALIAS(28598, "iso_8859-8") \ + CP_ALIAS(28598, "iso_8859_8") \ + CP_ALIAS(28599, "iso-8859-9") /* ISO 8859-9 Turkish */ \ + CP_ALIAS(28599, "iso8859-9") /* ISO 8859-9 Turkish */ \ + CP_ALIAS(28599, "iso_8859-9") \ + CP_ALIAS(28599, "iso_8859_9") \ + CP_ALIAS(28603, "iso-8859-13") /* ISO 8859-13 Estonian */ \ + CP_ALIAS(28603, "iso8859-13") /* ISO 8859-13 Estonian */ \ + CP_ALIAS(28603, "iso_8859-13") \ + CP_ALIAS(28603, "iso_8859_13") \ + CP_ALIAS(28605, "iso-8859-15") /* ISO 8859-15 Latin 9 */ \ + CP_ALIAS(28605, "iso8859-15") /* ISO 8859-15 Latin 9 */ \ + CP_ALIAS(28605, "iso_8859-15") \ + CP_ALIAS(28605, "iso_8859_15") \ + CP_ALIAS(29001, "x-Europa") /* Europa 3 */ \ + CP_ALIAS(38598, "iso-8859-8-i") /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ \ + CP_ALIAS(38598, "iso8859-8-i") /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ \ + CP_ALIAS(38598, "iso_8859-8-i") \ + CP_ALIAS(38598, "iso_8859_8-i") \ + CP_ALIAS(50220, "iso-2022-jp") /* ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) */ \ + CP_ALIAS(50221, "csISO2022JP") /* ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana) */ \ + CP_ALIAS(50222, "iso-2022-jp") /* ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI) */ \ + CP_ALIAS(50225, "iso-2022-kr") /* ISO 2022 Korean */ \ + CP_ALIAS(50225, "iso2022-kr") /* ISO 2022 Korean */ \ + CP_ALIAS(50227, "x-cp50227") /* ISO 2022 Simplified Chinese; Chinese Simplified (ISO 2022) */ \ + /* 50229 ISO 2022 Traditional Chinese */ \ + /* 50930 EBCDIC Japanese (Katakana) Extended */ \ + /* 50931 EBCDIC US-Canada and Japanese */ \ + /* 50933 EBCDIC Korean Extended and Korean */ \ + /* 50935 EBCDIC Simplified Chinese Extended and Simplified Chinese */ \ + /* 50936 EBCDIC Simplified Chinese */ \ + /* 50937 EBCDIC US-Canada and Traditional Chinese */ \ + /* 50939 EBCDIC Japanese (Latin) Extended and Japanese */ \ + CP_ALIAS(51932, "euc-jp") /* EUC Japanese */ \ + CP_ALIAS(51936, "EUC-CN") /* EUC Simplified Chinese; Chinese Simplified (EUC) */ \ + CP_ALIAS(51949, "euc-kr") /* EUC Korean */ \ + /* 51950 EUC Traditional Chinese */ \ + CP_ALIAS(52936, "hz-gb-2312") /* HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ) */ \ + CP_ALIAS(54936, "GB18030") /* Windows XP and later: GB18030 Simplified Chinese (4 byte); Chinese Simplified (GB18030) */ \ + CP_ALIAS(57002, "x-iscii-de") /* ISCII Devanagari */ \ + CP_ALIAS(57003, "x-iscii-be") /* ISCII Bengali */ \ + CP_ALIAS(57004, "x-iscii-ta") /* ISCII Tamil */ \ + CP_ALIAS(57005, "x-iscii-te") /* ISCII Telugu */ \ + CP_ALIAS(57006, "x-iscii-as") /* ISCII Assamese */ \ + CP_ALIAS(57007, "x-iscii-or") /* ISCII Oriya */ \ + CP_ALIAS(57008, "x-iscii-ka") /* ISCII Kannada */ \ + CP_ALIAS(57009, "x-iscii-ma") /* ISCII Malayalam */ \ + CP_ALIAS(57010, "x-iscii-gu") /* ISCII Gujarati */ \ + CP_ALIAS(57011, "x-iscii-pa") /* ISCII Punjabi */ + +#define CP_ALIAS(codepage, alias) codepage, +static const int cp_codepage[] = { + CP_ALIAS_LIST }; +#undef CP_ALIAS + +#define CP_ALIAS(codepage, alias) alias"\0" +static const char cp_alias[] ALIGN1 = + CP_ALIAS_LIST; +#undef CP_ALIAS /* * SJIS SHIFTJIS table CP932 table @@ -991,6 +981,7 @@ static int name_to_codepage(const char *name) { int i; + const char *alias; if (*name == '\0' || strcmp(name, "char") == 0) @@ -1004,9 +995,15 @@ name_to_codepage(const char *name) else if (_strnicmp(name, "xx", 2) == 0) return atoi(name + 2); /* XX123 for debug */ - for (i = 0; codepage_alias[i].name != NULL; ++i) - if (_stricmp(name, codepage_alias[i].name) == 0) - return codepage_alias[i].codepage; + i = 0; + alias = cp_alias; + while (*alias) { + if (_stricmp(alias, name) == 0) { + return cp_codepage[i]; + } + alias += strlen(alias) + 1; + ++i; + } return -1; } @@ -1791,12 +1788,16 @@ int iconv_main(int argc, char **argv) FILE *in = stdin; FILE *out = stdout; int ignore = 0; + const char *alias; while ((i = getopt(argc, argv, "f:t:lco:")) != -1) { switch (i) { case 'l': - for (i = 0; codepage_alias[i].name != NULL; ++i) - printf("%s\n", codepage_alias[i].name); + alias = cp_alias; + while (*alias) { + printf("%s\n", alias); + alias += strlen(alias) + 1; + } return 0; case 'f': -- cgit v1.2.3-55-g6feb